The Professor as Open Book  - <AUTHOR> http://www.nytimes.com/2008/03/20/fashion/20professor.html?ref=technology <comment><USER2> I went to a very large university (~50,000 students), which is viewed as something negative by many people. However, I cannot recall a single class where the professor did not know my name. Similarly, I cannot recall a single class where I didn't get to know the professor in some personal sense.

Particularly at such a large university, I think that some sense of personal connection with a professor is important. Why? Because I believe students learn better from a person with which they can emphasize. Furthermore, in my personal experience, having an entertaining professor directly correlates with the amount of enjoyment, knowledge, and fulfillment that I feel I receive from the class.

Many of my professors are now on Facebook, and I wholly appreciate their effort to be accessible in ways other than email and/or office hours.

</comment><comment><USER3> Interesting to see how this will play out. Professors are divided on the issue of how much to bare. There are those who feel that not being seen as an infallible guru takes away their prestige--even to the point of advising other instructors to never admit they don't know something. Others, like me, take a more "I'm human too" approach.

<comment><USER4> I try to seem human, because I don't want my students to think that infallible guru's exist. Plus, many "infallible gurus" are real dicks.

Several times, I've gotten student evaluations like this:

"This prof rocks. When I pointed out a problem with my midterm, he immediately fixed his mistake and apologized. How awesome is that? "</comment></comment>


Technical language in a non-technical setting (humor, video) - <AUTHOR> http://www.youtube.com/watch?v=gZp8GemqTTU

<comment><AUTHOR> I wouldn't usually submit this sort of item, but with Blackberry services still unavailable over large swathes of Europe, it seems apposite.

Even so, there's a more serious point. Often in trying to communicate technical subjects I run into the problem that science, math and computing have appropriated ordinary words and given them a specific, technical, and sometimes almost contradictory meaning. This can especially cause problems in UI design, where users are expecting - and expected - to grasp instantly the function and purpose of every button, widget and clickable they can see.

It's not always obvious.

Who is your audience? Have you defined them clearly enough to get this right?</comment>


Atom.io: Multi-Folder Projects - <AUTHOR> http://blog.atom.io/2015/04/15/multi-folder-projects.html <comment><USER2> I've used Atom for quite a while now (mostly for Go projects). Go-plus plugin is just awesome. I've also taken up development of [sourcegraph-atom][1] plugin.

For most day to day coding file size limits and slowness which comes from big files is not relevant. If your source files are huge you probably want to split them up more. If you have to work with big files Atom is not for you, but so are most editors. For data extraction and transformation I rather use CLI.

Where I've noticed slowdown the most is when you open up many files, I think things could be improved there, but again typically you don't need 20 files open in editor at the same time.

Multiple projects is a nice feature, but I'm already used to opening multiple windows if I do need to have multiple folders open. I'm sure the community will come up with some nice uses/plugins for it.

I think one of the biggest pluses for Atom is the active community and plugins and they're invested to keep it going and improve.

[1]: [https://github.com/sourcegraph/sourcegraph- atom](https://github.com/sourcegraph/sourcegraph-atom)

<comment><USER3> Yeah, I wish people would stop dismissing all the effort the Atom contributors are making by bringing up the 2MB file limit all the time. I've not seen a 2MB source code file (thankfully!) in a long time so it doesn't impact me. If I need to edit or search through a >2MB e.g. log or CSV file, I usually do that from the terminal anyways. The file size limit is a bit weird I'll admit but not a showstopper for me.

<comment><USER4> Their full screen bugs on OSX (possibly just when using multiple monitors) are what keep driving me back to Sublime. Large files can usually be accessed elsewhere; the inability to switch windows when you have unsaved worked over there is lost time/money.

<comment><USER5> It might just be multiple monitor related. I use Atom on OSX Mavericks daily, and haven't noticed any issues. Only one monitor though.

<comment><USER4> Are you accessing multiple full screen windows and swiping between them? I think that's where the bug is.

</comment></comment></comment></comment></comment><comment><USER6> Are people using Atom as their main editor now? i.e. have successfully made the switch from sublime? Just wondering how it holds up under daily use.

<comment><USER7> I've tried making the switch last week but Atom is still missing some very essential basics for me, such as the ability to quit the app, reopen it, and have it automatically restore the same views, layout, files, and cursor location it had when it closed. I tried a couple add-ons that claimed to add this feature of Sublime Text to Atom but I just got a lot of plugin errors and they didn't actually work.

I also miss some basic things like the ability in Sublime Text to start up in fullscreen automatically (not a maximized window, but true distraction free fullscreen with no system UI or menubar visible).

Additionally for some reason the fuzzy search is extremely slow and seems to reindex from scratch regularly, blocking me for about 10 seconds every single time I restart the app, compared with Sublime Text where I have never had to wait on a blocking indexing operation to use the fuzzy search.

I think Atom will be great some day but it still isn't there for me yet.

<comment><USER8> The issues on your first paragraph:

* [https://github.com/atom/atom/issues/1603#issuecomment-935991...](https://github.com/atom/atom/issues/1603#issuecomment-93599126)

* [https://github.com/atom/atom/issues/6396](https://github.com/atom/atom/issues/6396)

<comment><USER7> Awesome! Looks like I'll be giving Atom another try soon.

</comment></comment></comment></comment><comment><USER9> This question is completely off topic, but I'm hoping someone might have an answer as google searches have been fruitless for me.

Why doesn't Atom support :w to save when in vim-mode? Is there any way to toggle this on? I can't remove 10 years of muscle memory and start using [cmd]s.

I've been looking at alternatives to macvim and this is so far the most promising for me, but I may need to wait for full neovim integration to get me to completely switch.

<comment><USER10> Shameless plug, as I scratched that itch: [https://atom.io/packages/ex- mode](https://atom.io/packages/ex-mode)

Does much more than `:w` now, but contributions are very welcome.

<comment><USER11> Argh this has been annoying me for so long. You sir are a godsend

</comment></comment></comment><comment><USER12> Judging by the commit logs I'm guessing there is at least 1 or 2 people working on Atom full-time. I'm surprised a company of GitHub's size can pull off what is essentially a skunk works project with no revenue potential and have people working on it full or near-full time and the investors are ok with that.

<comment><USER13> > I'm surprised a company of GitHub's size can pull off what is essentially a > skunk works project with no revenue potential

Since when do extensible editors around which IDEs can be built have no revenue potential?

And that's before even considering synergies that an editor integrating workflows for other GitHub services might have.

<comment><USER4> GitHub originally was going to charge for it, and then announced it would be free. Pretty sure they're locked into that decision or else it'll be bad PR.

<comment><USER13> A free (even open-source) extensible editor that is also the foundation on which commercial IDEs are built (or for which there are first-party commercial extensions) isn't exactly an unheard-of business model.

<comment><USER4> Sure, see JetBrains and all their Eclipse-based IDEs. Facebook has already come out with an Atom-based IDE, and it won't be the last. I'm not sure that Github will be the one releasing a commercial one though. However, I think a base open source project with a upgraded commercial fine is fine (see Sidekiq)

</comment></comment></comment></comment></comment><comment><USER14> Working with multifolders is a little bit tricky. As soon as you open 5+ files, sidebar gets really long that it is hard to go back and forth.

Sublime has this plugin called SyncedSideBar which is kind of ok but gets too jumpy even when i preview a file.

I hope they consider this while developing the feature.

</comment><comment><USER15> I really like this feature. I'm currently pulling some functionality out of one app and into a separate gem. This allows me to cmd+p and find the files I want in either project. It also saves a ton of memory by not opening a second atom window.

</comment><comment><USER16> My coworker uses Atom strictly because he can find-and-replace and scope it by directory. Seems he cant do that in Sublime.

</comment><comment><USER17> Does anybody know what theme is used in the screenshot?

<comment><USER18> That screenshot uses the new default UI and syntax themes. Both are called `One Dark`. I think the UI theme is quite amazing; it adapts to complement whatever syntax theme you're using. See simurai's blog post: [http://blog.atom.io/2015/02/18/one- themes.html](http://blog.atom.io/2015/02/18/one-themes.html).

<comment><USER17> Thanks!

</comment></comment></comment><comment><USER19> Still an issue opening a large (> 2MB) file?

<comment><USER20> A fix is currently in progress: [https://github.com/atom/text- document](https://github.com/atom/text-document)</comment></comment>


The fastest pulsar spins at 716Hz; its equator spins at 24% the speed of light - <AUTHOR> http://en.wikipedia.org/wiki/PSR_J1748-2446ad <comment><USER3> Lemme guess, you caught this from [http://xkcd.com/1331/](http://xkcd.com/1331/) too?

<comment><USER4> I could not take my eyes off "One Birth" / "One Death"

Fascinating - and I think humanity is "winning"

<comment><USER5> I couldn't take my eyes off of the fact that everytime wikipedia is edited someone dies.

How 'bout that for the correlation=causation folks!

<comment><USER6> Damnit you guys, stop editing!

</comment></comment></comment></comment><comment><USER7> Dropping something the mass of a tennis ball into this pulsar(assuming 2 solar masses for it) would generate approximately the same amount of energy upon impact as that of 12 atomic bombs like the one tested in New Mexico, and it would reach the surface at 60% the speed of light...relativistic effects aside

<comment><USER8> Which is to say: the escape velocity is 60% of the speed of light! So even starting from 24% of the speed of light at the equator you need to go 10,000x faster than on Earth to escape.

</comment></comment><comment><USER9> You can see round the back of a neutron star:

[http://en.wikipedia.org/wiki/Neutron_star#Properties](http://en.wikipedia.org/wiki/Neutron_star#Properties)

<comment><USER10> Wow, that page led me to the fact that there _is_ such a thing as centrifugal force... And all these years spent trying to correct people. Oh well, you live, you learn.

[http://en.wikipedia.org/wiki/Photon_sphere](http://en.wikipedia.org/wiki/Photon_sphere)

<comment><USER11> The "war on centrifugal force" is pedagogical. If you sit in an inertial frame, all forces you intend to teach are due to interactions between objects. This lets teachers introduce the interactions one at a time in a way that presents minimal opportunity for the "no, that equation doesn't work here for XYZ reasons which you won't understand until after you've taken vector calculus" problem.

If you allow rotating reference frames then you've got to talk about transformation rules in gory detail. Everyone understands centrifugal force, but what about the coriolis and euler forces? Our intuition doesn't tell us when they apply and when they don't, so we have to be systematic about it, and that means "gory details". And guess what "being systematic about it" involves? Moving to an inertial frame of reference and taking derivatives!

You can't be intuitively correct _or_ systematic about rotating frames without thoroughly understanding inertial frames, so that's what you learn first, along with strongly worded advice to stay away from non-inertial frames (e.g. defining frame-dependent forces as "fictitious").

Anyone doing general relativity is comfortable enough with coordinate transformations that they can understand the caveats that come with frame- dependent forces and even take advantage of them to simplify calculations or definitions (the process of going from a "global" to a "local" coordinate system is highly nontrivial in GR).

That's why the Coriolis, Euler, and Centrifugal forces are called "fictitious" while gravity isn't.

<comment><USER4> This is what I love about HN - an anti-troll comment. Like most of us I think a generalist knowledge confers the right to an opinion and expressing that opinion.

Comments like this point out just how much I do not know, they sweep their arms across a horizon of maths and hard won understanding and say "only express that opinion _after_ you know what that means"

Anti-trolling.

It's what keeps us honest about our own limitations, and reluctant to spout off crap.

love it. Now going to look up inertial frames and start translating.

</comment></comment></comment></comment><comment><USER12> Linking to wikipedia pages with titles like this = Today I Learned on HN

Yet another reason I like the "don't change the title; the title is not for editorializing" policy on HN.

<comment><USER13> So what are you proposing in this case, that the original poster had kept the Wikipedia title? Or that the linked Wikipedia article shouldn't have been posted at all ?

Because hn's anti editorialization policy is useless in both cases. For, in the first case, without editorialization, the title is completely useless except for experts on the subject. And for the second case, it has nothing to do with title editorialization, but with content.

<comment><USER12> The policy is: "Do not change the title." What is it that you are having trouble understanding?

</comment></comment></comment><comment><USER14> does this mean that time flows significantly faster on the outside of the pulsar then on the inside, if so does this significantly impact the pulsar dynamics?

<comment><USER15> There is not much difference. The relativistic factor is 1.030107, that is a ~3% change.

EDIT:

My amateur physics say that the gravitational well adds 9.7% to that.

I tried the same calculation for earth and it gave a sensible result: a change of 6.95 * 10^-10.

Here is an answer from physics exchange which gets the same result: [http://physics.stackexchange.com/questions/10089/gravitation...](http://physics.stackexchange.com/questions/10089/gravitational- time-dilation-at-the-earths-center)

<comment><USER16> Keep in mind that differences in gravity will also affect time dilation.

<comment><USER17> And this correction goes in the other way.

<comment><USER15> No, time in a gravitational well runs more slowly relative to someone outside, just as your experience time slower if you are traveling very fast.

<comment><USER18> I think the point was that time in the center of the star is more affected by gravity than at the surface. Whereas someone on the surface (if that were possible) would experience greater time dilation relative to the center due to his high relative velocity. So for those two points (surface vs center), the two time dilation effects are working opposite each other.

Edit: I may have been reading too much into it. The effects you see will depend on which positions you're comparing, and people in this thread haven't really specified.

<comment><USER15> I think you mixed up some things. There is no gravity or time dilation in the center of a massive spherical object.

<comment><USER19> If you're in a small empty room in the middle of a neutron star, you will be floating weightless, but you're still at the bottom of a gravity well. Since it's the well, not the acceleration that affects time, time will tick slower for you.

(Don't try this at home.) (And if you do, don't touch the walls.)

<comment><USER15> Spacetime in the center of a perfect spherical object is the same as a point in empty space, you can't tell them apart. Of course that only counts for the exact point in the center. So the time will not tick slower there as to someone far from any objects.

<comment><USER20> What? The lowest potential in a uniform sphere is at the centre not the surface ([http://en.wikipedia.org/wiki/File:GravityPotential.jpg](http://en.wikipedia.org/wiki/File:GravityPotential.jpg)). Also graviational time dilation depends on the potential not the force (curvature) so it is irrelevant if the point at the centre is shifted in spacetime

<comment><USER20> Time will still tick slower though regardless of the first part of what you say being right

<comment><USER20> Your link doesn't even relate to time dilation and is also about a _hollow_ sphere, not a uniformly dense solid sphere. Moreover in a hollow sphere, time dilation still occurs because it depends on the absolute (or rather, relative to an outside distant observer) potential, not the gravitational field (which is the only thing that is necessarily zero as a result of the flat spacetime in the sphere). See for example this [http://physics.stackexchange.com/questions/69821/a-hollow- bl...](http://physics.stackexchange.com/questions/69821/a-hollow-black-hole)

It's like you didn't read your link

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> The core of a Pulsar has never been directly observed. Their makeup is hypothetical. Perhaps an alternative explanation for the observed behaviour would be less astounding... [https://www.thunderbolts.info/tpod/2004/arch/040920pulsar.ht...](https://www.thunderbolts.info/tpod/2004/arch/040920pulsar.htm)

<comment><USER22> I like that theory. Generally the problem with science is that it's turned into a belief system almost akin to a religion by many people. Strangely, even by very smart physicists.

They seem to overlook the fact that we don't know anything; compared to what is out there our knowledge might approach a millionth of a millionth percent of all knowable things; but even that is just for illustration because if you only take into account the scale of the known universe it's going to be a number so small as to approach 0. We know literally nothing.

It's fine to come up with grand theories of how things work - <USER2> imagination is a wonderful thing. Just don't mistake it for facts.

</comment></comment><comment><USER23> They also spin so regularly that you can build a clock out of their signals:

[http://en.wikipedia.org/wiki/Pulsar_clock](http://en.wikipedia.org/wiki/Pulsar_clock)

<comment><USER24> Don't we already use these as a sort of GPS for interstellar travel? I think the Voyager plaques contained coordinates to Earth based on pulsar frequency.

<comment><USER23> I didn't know that. That's fascinating and "beautiful"!

</comment></comment></comment><comment><USER25> Why do planets, stars and moons spin? Are there any that don't?

<comment><USER26> Classically, mathematically, the answer is conservation of angular momentum. As matter falls on to the body the body needs to rotate faster to conserve the energy of the system. A rotation happens if there is even a tiny asymmetry in the accreting matter.

In the case of our own Moon, one side is more massive than the other and over the course of millions of years became tidally locked so that the heavier side always points towards the Earth.

</comment></comment><comment><USER27> This is sort of the ultimate demonstration of the spinning ice skater who seems to be in every eighth grade science book.

</comment><comment><USER28> Anyone feel like calculating the energy embodied in just the rotation of this star?

<comment><USER29> Makes me wonder if there will be someday an electrical generator using the rotational energy of a celestial body.

(this would need to have a reference in the main star, otherwise it would just spin with the planet)

<comment><USER30> _generator using the rotational energy...would need to have a reference in the main star_

Nope. You could launch generator pods in a hyperbolic trajectory that would start out escaping the neutron star, but generate electricity from the rotating magnetic field in such a way that it's captured in orbit and comes back to its launch point.

<comment><USER28> No you can't. Conservation of angular momentum doesn't allow that.

<comment><USER30> Yes you can. You just end up changing the angular momentum of two bodies, not just one. When you launch the pod, you slow down the body you launched from. The system as a whole conserves momentum and energy, but the amount of electricity you have increases.

</comment></comment></comment></comment></comment><comment><USER31> When I try to get on my head a "sun" spinning 716 times on a second I feel my stomach sick... Lousy astronaut here :-(

</comment><comment><USER32> Holy cow: We can detect an object 16km large at 18,000 light-years from Earth!</comment>


Honey I Squashed the Commits - <AUTHOR> http://denniskubes.com/2012/08/22/honey-i-squashed-the-commits/ <comment><USER2> In summary, use cherry-pick to apply specific commit diff's (by hash) to a new branch. Makes perfect sense. I also use this technique all the time with github projects where I just want a bug fix or two from someone else's fork.

<comment><USER3> You don't even have to cherry-pick. Use git reflog to find the topmost correct sha1 (or in the example, right after the rebase, HEAD@{4}), and then do

        git checkout -b revovery
        git reset --hard HEAD@{5} #(the checkout made HEAD change, hence +1)

or even faster:

        git branch recovery -f HEAD@{4}

The key here is to understand that git commit objects include a reference to their parents, and that git merely constructs a branch's history by evaluating the ref to a sha1 and walking over objects recursively. So to recover we merely make something point at the topmost sha1.

Then, in the case of additional commits that came _after_ the squash, you use _git rebase --onto_ to replay the commits that came after the squash on top of the unsquashed commits, which would give us:

       git checkout -b recovery
       git rebase --onto last_sha1_before_squash squashed_commit_sha1 recovery

The _checkout -b_ is just so that rebase will handily move that pointer for us (see _man git-rebase_ ) while _rebase_ will replay commits from _squashed_commit_sha1_ 's child up to the commit currently pointed at by _recovery_ , over _last_sha1_before_squash_ (again, see man page)

<comment><USER2> Nice! Thanks for the explanation.

</comment></comment></comment><comment><USER4> Recovering seemingly lost commits is really important skill to have when working with git. However, it is infinitely easier with the git reflog command.

<comment><AUTHOR> I have updated the article to show both the git reflog and using the HEAD file.</comment></comment>


Turning a broken iPhone into a working USB flash drive [video] - <AUTHOR> https://www.youtube.com/watch?v=AptPGnVAXeM <comment><USER2> It's a 20min+ video about a guy soldering a NAND flash chip to a board designed to accept said NAND flash chip. Amazingly, Scotty manages to still make it interesting by giving you an unpolished view of his process; he documents his failures, successes and his interactions with people in Shenzhen.

If you're looking for the engineering side though you might be disappointed, there isn't much technical content here. It's more of a hackers guide to getting something working.

</comment><comment><USER3> I watched his video and legitimately had a smile on my face when he finally got it to work.

I feel that it tells the story of many makers, and I see myself in it. I can feel his face wearing out and I see it in my face when I couldn't get something to work so badly. I'm sure anyone who has ever worked on a hard project can also empathize. At least this project I can feel like it's just small hardware that is the obstacle, the flash chip probably has a datasheet somewhere to make the whole process possible.

Watching his other memory upgrade video, I couldn't imagine how much work that is to reverse engineer the flash memory contents of the iPhone chip to change its configuration. I wonder how much sweat, labor, and ingenuity went into that software. And we probably will never get to know who it is that is behind that software.

</comment><comment> threeeyed-raven I enjoyed his previous videos where he customized a large part of his iPhone haha. It's insane how many parts you can buy in Shenzhen.

</comment><comment><USER4> He also added a headphone jack to an iPhone 7;

[https://www.youtube.com/watch?v=AptPGnVAXeM](https://www.youtube.com/watch?v=AptPGnVAXeM)</comment>


One simple idea to improve HN story quality - <AUTHOR>

Get more eyes and therefore more quality votes on new submissions.  How often do you look at the new page? I don't.  It's too hard.
This idea is stupidly simple.  Just make a two column layout.  Might work, might not.  Try it for a couple days and see what happens!
mockup: http://dl.dropbox.com/u/150723/test.html <comment><USER2> I ONLY look at the new page. The front page I can get from my facebook feed.

</comment><comment><AUTHOR> clickable: <http://dl.dropbox.com/u/150723/test.html>

<comment><USER3> Was thinking two iframes when I read the ask. Always helpful to see it live and consider it's utility in practice.

</comment></comment><comment><USER4> i prefer a combination of other suggestions in the giant thread:

1) hide points

2) on the front page, randomly pepper in new submissions. like, perhaps the top 5 will always be the true top 5, but the rest of the front page will have 5 random "new" items inserted in random positions.</comment>


Python API for Zero Day Phishing Detection Based on Computer Vision - <AUTHOR> https://github.com/phishai/phish-ai-api <comment><USER3> This is really great. I think if this gains traction, it could be fascinating for Computer Vision in general, as inevitably scammers would try to introduce adversarial elements to fool the CV, potentially by training a CV AI of their own to try and replicate (mis)classification. The end result of such an arms race is CV that better mimics human perception.

<comment><AUTHOR> Thanks!

<comment><USER4> Even before it has an impact on CV, this is really important. If widely adopted, it mitigates against the "script kiddie-ization" of phishing sites, where it becomes easier and easier to closely mimic a legitimate site by reusing (perhaps in real time via proxy) its original assets. Such attackers won't have the ability to create novel adversarial elements, though, and you could train yourselves on any that made it into common exploit scripts.

That said, your browser plugin is extremely aggressive at uploading screenshots of potentially sensitive information to your servers (for instance, someone's stealth mode startup's unindexed Heroku staging URL), doing so by default if it hasn't been whitelisted [0]. And your privacy policy [1] permits you to resell "non-personally identifiable visitor information... to other parties for marketing, advertising, or other uses."

I don't blame you for needing to make money or for launching an MVP, but there must be better zero-knowledge ways of accomplishing this. It's an important goal and I wish you all the best... but don't be the source of the data leaks you intend to prevent.

[0] [https://github.com/phishai/phish- protect/blob/master/js/back...](https://github.com/phishai/phish- protect/blob/master/js/background.js#L74)

[1] [https://www.phish.ai/phish-ai-privacy- policy/](https://www.phish.ai/phish-ai-privacy-policy/)

<comment><AUTHOR> Hey, Thanks for the extensive reply.

Per the browser extension, we don't upload every screenshot in the free extension only if you like to scan a particular webpage as we can't afford to scan every webpage for free. We don't sell any information as this is not our business model - I got your point with the privacy policy and we will make it more accurate.

The business model is mainly with API product where you will see more integration coming up in the next couple of months and as I said the use case for the API is more for incident response teams and hosting providers that need to go manually through a lot of URLs and tag them.

</comment></comment></comment></comment><comment><USER5> The best I get reading the website is that it 'proactively crawls' websites of "top brands"

And then with the extension it takes a screenshot of every page you visit and uploads to their server that does something with CV fast enough that it can block you from submitting data to a phishing attempt.

Anybody have any details of how this actually works?

Seems a little magic.

<comment><AUTHOR> Hey, So looks like quite a lot of confusion and our content marketing need to be improved. Anyway, I'll try to explain here:

1) we crawl websites of known brands and take screenshots of them. then we extract AI & computer vision features from them and create signatures for every website.

Now there are two products 1) API: you can use this for any type of use case: incident response, automated phishing classification for hosting providers. or any other use-case that you can think of. 2) chrome extension: The free version is not uploading screenshots in real-time as it's very expensive and resource consuming to process a lot of screenshots so it's available only for enterprise version. The free chrome extension has two features: unicode detection and link to scan the current website actively with Phish.AI - <USER2> really nothing to call home about.

Hope it made some things a bit clearer

</comment></comment><comment><USER6> I am not sure this works. I just tested it on a dummy phishing site I made and it came as clean.

<comment><AUTHOR> Hey, Thanks for the feedback! We are currently in Beta and we some false negative/positive can occur Also I'll publish an up-to-date list of brands that we detect

</comment></comment><comment><USER7> Pipe... all of my email... through some startup's random opaque web service...?

<comment><AUTHOR> Why email? It's not an email service at all....I guess we need to improve our content marketing but we don't have the word email anywhere on our site. Having said that the main service is an API that you can use for a lot use cases for example a good use case is an incident response team that goes manually through a lot of phishing reports to tag them and some hosting providers that goes through their websites to get down phishing or hacked website

<comment><USER7> So... the idea is (potentially) for a provider's mail filters to extract links from emails and submit them to your API, raising an alert if it's a close match for a known site but not on a whitelisted domain?

<comment><AUTHOR> No it won't work for an email at all. You can't integrate it with email links because the service needs to surf to the url to take a screenshot and then analyze the screenshot. If we will click on every link in an email will make chaos and unsubscribe everyone from everything and decline/accept/maybe all invitations:)

The use case is more appropriate for Incident-response teams that go manually through tons of URLs to classify them or Hosting providers that go through tons of websites to check if phishing websites are hosted or some sites were hacked. Essentially any use case where you have a feed of urls that you can access from the web and tag/find phishing websites

</comment></comment></comment></comment><comment><USER8> Old and busted: Phishing attempt leaks all my companies' emails.

New and hot: Breach at phish.ai's screenshot database leaks all my company's emails.

<comment><AUTHOR> Hey there, I already answered here in the thread - we are not an email solution please see my other reply to ris. Hope people will at least read the thread or the website before posting negative feedback.

</comment></comment><comment><USER9> This entire project is less than 20 lines of code:

[https://github.com/phishai/phish-ai- api/blob/master/phish_ai...](https://github.com/phishai/phish-ai- api/blob/master/phish_ai_api/__init__.py)

<comment><USER10> That's not impressive when those lines are just API calls to a hosted service that does all of the actual work.

<comment><USER11> I suppose that comment is to indicate exactly what's been linked to and not to indicate an impressive feat.

So, yes, you are likely both in agreement.

Instead of what content often shows up on HN with lots of technical detail, this amounts to a service announcement.

This service sounds interesting but a much better HN submission would be one that talks about how it works, how it was improved, etc. Browsing the phish.ai website uncovers several (very brief) articles that are more interesting than this repo.

BTW footnote wrt the API's design -- {"verdict": "clean"} -- this is not ideal for a non-interactive service. It should either return a numeral (like a confidence interval) or a boolean value.

<comment><AUTHOR> Hey, Thanks for the feedback. It's a great idea and I got the same feedback from more people so we will publish a blog on how it works - I replied with a short explanation to encoderer. footnote on API design noted and will be added:) thx

</comment></comment></comment></comment><comment><USER12> This is a Python API _client_ for a zero day phishing detection service. The title of this post is misleading and makes it sound like it is an open-source project.

</comment><comment><USER13> This is very cool; as computer vision gets better and the database grows, I can easily see this being the default way to do phishing detection.

<comment><AUTHOR> True, the database is the key here. we are still in Beta and our database grows every day!</comment></comment>


Who writes Wikipedia? Analyzing Compressed Revision Diffs - <AUTHOR> http://slightlynew.blogspot.com/2011/05/who-writes-wikipedia-information.html

<comment><USER2> Didn't expect this would get to HN so soon! I'm the author, let me know if you have any questions.</comment>


Animated Knots: Learn how to tie knots with step-by-step animation - <AUTHOR> https://www.animatedknots.com/complete-knot-list <comment><USER2> Incidentally, my favourite knot of all time is also listed first: the adjustable grip hitch, [https://www.animatedknots.com/adjustable-grip-hitch- knot](https://www.animatedknots.com/adjustable-grip-hitch-knot)

Take 5 minutes out of your day, find a small piece of rope (or CAT5, headphone wire, USB cable), and actually tie the knot with your hands. It's super easy to pre-visualize the knot forming and you can learn to tie the knot in any orientation after just a couple tries.

Being able to adjust the tension on the line after tying the knot pops up in all manner of practical situations. This was my gateway drug to the wonderful world of knots.

\---

EDIT: to encourage people to actually tie the damn thing, here's a picture of my computer mouse cable around the handle of my coffee cup: [https://i.imgur.com/ZN4WXoB.jpg](https://i.imgur.com/ZN4WXoB.jpg) (in the "right handed down" orientation, as opposed the the "right handed up" direction from the instructions).

<comment><USER3> I rarely find situations where I want to use this knot over a trucker's hitch (which trades some ease of adjustment for significant mechanical advantage when tensioning). I have combined the two from time to time (using the adjustable hitch to secure the working end)

<comment><USER2> That's fair, I too use a trucker's hitch for the ridgeline of a tarp.

However, I'll use adjustable grip hitches for the guylines. That lets me freely adjust how my tarp is placed and holds up the tension reasonably (from experience, the friction hitch on paracord could do with tightening every 1.5 days or so). It's also quicker to tie and uses less cordage, so that's a plus.

Combining the two straight up never occurred to me. Will definitely give that a shot :)

<comment><USER4> Clove hitch on a bight is great for guylines too.

</comment></comment></comment></comment><comment><USER5> If you're not handsome, at least be handy ;) Got into knots partly as a hobby, partly because they actually come in handy when camping or when the license plate holder of your car gets knocked off from a low curb and you need a quick way of reattaching it. You know, good life skills.

If you want to experiment, there's really only three knots that will solve 80% of your common needs:

1) Bowline: [https://www.animatedknots.com/bowline- knot](https://www.animatedknots.com/bowline-knot) \-- secure loop that doesn't slide, easy to undo (mnemonic: "rabbit comes out of the hole, goes around the tree, and runs back down the hole")

2) Midshipman's Hitch: [https://www.animatedknots.com/midshipmans-hitch- knot](https://www.animatedknots.com/midshipmans-hitch-knot) \-- sliding adjustable-tension knot for tying down gear or guy lines

3) Square Knot: [https://www.animatedknots.com/square- knot](https://www.animatedknots.com/square-knot) For quick tying of two ropes together. Fun fact: the square knot is also how you already tie your shoelaces! You're just using a loop (a "bight") instead of the end of the rope because bights are commonly added to quickly undo knots (see, you're already using advanced techniques!). And funner fact: if you understand how you accidentally reverse the square knot to make it weaker, you can understand how NOT to tie your shoelaces in the way that makes them come undone easily!

Bonus Points: the Trucker's Hitch for tying down gear. It's basically any number of fixed-loop knots like the bowline to create a "pully" (mechanical advantage), fixed by any number of adjustable tension knots like the midshipman's to hold it down.

<comment><USER6> Wouldn't argue with the bowline, although do make sure you give it a generous safety stopper knot if it's vital (I climb with it and consider it incomplete without). It's a good alternative to figure of eight if you are untying frequently.

RE the "square not", in the UK this is usually called a reef knot: never use this for safety, a far superior alternative is the double fishermans [https://www.animatedknots.com/double-fishermans-bend- knot](https://www.animatedknots.com/double-fishermans-bend-knot), also use this for climbing, this is considered the best, strongest, safest way to join the ends of two ropes and it's pretty simple (you can add stoppers for safety or just make very long ends unlike the video). Unlike the bowline it can be a bitch to undo, but if you need safety...

<comment><USER3> > (I climb with it and consider it incomplete without)

My "climbing" is all rescue related (so almost entirely rappelling/hauling, not actual climbing), but I don't think I've ever used a bowline for anything life-safety related, with or without a safety knot.

<comment><USER6> Yeah I can't imagine it being used in a rescue context, you tend to see a lot of sports climbers using it, it's also more common in Spain - they have another variation where they thread it all the way back through itself so it's extremely safe, but still benefits from easy untying.

Bowline is useful if you are likely to take lots of falls on a single rope as with sport climbing (bolts) with frequent untying, where figure of eight can become very difficult to undo. Technically figure of eight is stronger in terms of _rope_ failure, but this is not usually the most important thing for climbing since if the instant force is strong enough for that to be a concern you are going to break your back anyway. It is however unsafer in the sense of being more easy to tie badly, for that reason I'd never encourage a novice climber to use it over a figure of eight - but when you are experienced, and are taking falls (and have a routine to check the knot), this knot saves your fingers and your rope from a lot of unnecessary stress. In a rescue context though I can't see any benefit, so figure of eight for sure.

<comment><USER3> Yeah, different priorities. Sport climbing you're trying to minimize hassle, and can do it frequently enough to be confident tying a secure bowline. I get to play with ropes maybe every other month between training and actual incidents. That's infrequent enough that sticking with a simple, bomb-proof knot like the figure-8 is the safer bet.

Like you said, the figure-8 excels in strength (which matters more in rescue, since you're often dealing with loads heavier than a single climber), and has the added advantage of being easily inspected. I can look at a figure-8 someone else tied and have a high degree of confidence very quickly; I feel like that's harder with the bowline (since it's asymmetrical, etc).

</comment></comment></comment></comment></comment><comment><USER7> There's a link to the site that describes the one step shoelace knot. [1] It's saved me 5 seconds a day for 15 years, that's 8 hours I got back, plus it's neat to demonstrate and spread the word.

[1] [https://www.fieggen.com/shoelace/ianknot.htm](https://www.fieggen.com/shoelace/ianknot.htm)

<comment><USER8> I'm also a convert to this. It's even more efficient if combined with Ukranian Lacing: [https://www.fieggen.com/shoelace/ukrainianlacing.htm](https://www.fieggen.com/shoelace/ukrainianlacing.htm)

<comment><USER7> Wow I hadn't seen that. I will learn it, thanks!

</comment></comment></comment><comment><USER9> This information is useful, but I'm often disappointed at the super-granular focus of information offered by knot-tying manuals, and this guide is no different.

For example, take the truckers hitch ([https://www.animatedknots.com/truckers- hitch-knot](https://www.animatedknots.com/truckers-hitch-knot)). I could give this to someone and I'm sure they could tie the knot, but I would have great doubt about their ability to actually secure a load on a rooftop rack. There's a big gap between the mechanics of knot-tying and the application of the knot to a larger scenario.

I wish a guide came out that was more scenario based, covering things like:

How to secure a tarp so it doesn't blow away, how to secure a load on a car, how to lash together a back-country field-table/stool, etc.

<comment><USER10> _How to secure a tarp so it doesn 't blow away, how to secure a load on a car, how to lash together a back-country field-table/stool, etc. _

I'm pretty sure the answer to all of those is duct tape.

</comment></comment><comment><USER11> As useful as sites like these are, there is still no substitute for the encyclopedic _Ashley Book of Knots_ [1][2], which contains every knot under the sun and then some (up to the time it was written -- and, to be fair, quite a few knots have been invented since then, but it's still an impressive tome).

[1] - [https://en.wikipedia.org/wiki/The_Ashley_Book_of_Knots](https://en.wikipedia.org/wiki/The_Ashley_Book_of_Knots)

[2] - [https://www.amazon.com/Ashley-Book-Knots- Clifford-W/dp/03850...](https://www.amazon.com/Ashley-Book-Knots- Clifford-W/dp/0385040253)

<comment><USER12> I have mixed feelings about _Ashley_ \- there's no doubt it's a very cool book for its sweeping scope, but I would never recommend it as a guide for learning tie knots. There are many good choices from Budworth[1], Pawson[2], Toss[3] and more.

1: [https://www.goodreads.com/book/show/1069046.The_Complete_Boo...](https://www.goodreads.com/book/show/1069046.The_Complete_Book_of_Knots)

2: [https://www.goodreads.com/book/show/220058.Handbook_of_Knots](https://www.goodreads.com/book/show/220058.Handbook_of_Knots)

3: [https://www.goodreads.com/book/show/1476184.Knots](https://www.goodreads.com/book/show/1476184.Knots)

<comment><USER13> FWIW, I agree. The Ashley Book of Knots is the only book I've ever returned to Amazon.

It's expensive for what amounts to a coffee-table book of old drawings and a history of many superfluous, duplicate, or decorative knots.

A lot of the information is outdated with respect to newer materials and/or the "knot" industry.

</comment></comment></comment><comment><USER14> This is pretty cool, it helps to see things moving. I've got an app for the iPad that does this for a zillion knots. Of course it isn't as funny as the Ylvis youtube video on the trucker's hitch ([https://www.youtube.com/watch?v=TUHgGK- tImY](https://www.youtube.com/watch?v=TUHgGK-tImY)) :-)

</comment><comment><USER15> This looks very nice - I use the rather lovely Knots 3D on iOS - an app that I've had installed for about 10 years or so? Handy if you are out on the road and lets you use a scrubber bar to see the construction of the knot and rotate it around 3 axes.

</comment><comment><USER16> Can someone explain the difference between a "bight" and a "loop"?

[https://home.army.mil/wood/application/files/8915/3868/3675/...](https://home.army.mil/wood/application/files/8915/3868/3675/knots.pdf)

In the linked pdf, a bight is bend/curve of rope that doesn't cross itself; however, they show a "double bight" which seems to cross itself. They say that the "strands" don't cross... errr ok?, I'm not understanding how the "double bight" is not a "loop"... the rope is crossing itself!

<comment><USER17> You "make" a loop but "take" a bight, as unhelpful as that may be. A loop is a step in making a knot, where as a bight is just a handful of rope somewhere in the middle of it.

You can tie a regular bowline, or a bowline on a bight. The same knot will need a different technique for tying on a bight, since you can't pass the ends through. When you tie a bowline on a bight, first you take a bight, then you make a loop.

</comment></comment><comment><USER18> I love how clean and professional looking this is, and how difficult it is to tell that it's being monetized. Content like this is why the internet exists! I can definitely see the value in having this app on my phone too.

</comment><comment><USER19> Awesome that this is here on HN - By chance, used this site last week when setting up some fishing gear and commented to some friends how great the site was.

The site does an amazing job at a visual step-by-step guide that's easy to understand w/o always asking.. "did I skip a step?".. "How does that move that way?" .. The makers seem to have separated their steps in just the right way which is always a challenge. The pictures are high-quality too.

Kudos! Glad to see it get more eyeballs!

</comment><comment><USER20> If you're going for one mostly-perfect bend or knot, make it the Zeppelin Bend[1] and the Zeppelin Loop[2]. Secure, fixed, easy, jam-resistant. It's not well known, so don't use it when other people need to understand your knots, but it's hard to beat for overall utility. If you need other people to understand it, use the Alpine Butterfly Bend[3]/Loop[4].

[1] [https://en.wikipedia.org/wiki/Zeppelin_bend](https://en.wikipedia.org/wiki/Zeppelin_bend) [2] [https://en.wikipedia.org/wiki/Zeppelin_loop](https://en.wikipedia.org/wiki/Zeppelin_loop) [3] [https://www.animatedknots.com/alpine-butterfly-bend- knot](https://www.animatedknots.com/alpine-butterfly-bend-knot) [4] [https://www.animatedknots.com/alpine-butterfly-loop- knot](https://www.animatedknots.com/alpine-butterfly-loop-knot)

</comment><comment><USER21> I'm pretty ignorant about knots, but is there any specific reason the hangman's knot isn't listed? Perhaps I'm just unable to find it?

In case its not included at all - I realize the knot has macabre associations, but a site aiming to be an encyclopedia of knots should in my opinion include every knot there is, good or bad alike.

<comment><USER22> I believe this knot is similar, but not quite the same: [https://www.animatedknots.com/uni-knot](https://www.animatedknots.com/uni- knot).

The site also has the noose knot which can be extended to create a hangman's knot: [https://www.animatedknots.com/noose- knot](https://www.animatedknots.com/noose-knot)

There is some discussion on the noose knot page that indicates the hangman's knot is deliberately not included in the encyclopedia. The site doesn't give a reason for not including it.

I agree it should be included in an encyclopedia of knots. Any knot can be dangerous if you put it around your neck.

</comment></comment><comment><USER23> That's a pretty cool sight, although some of the classifications confused me.

For example, suppose I've got two ropes that I want to join together near the ends. I need a splice, right? And there is a "splicing" category...but the "splicing" category only contains one knot for joining two ropes end to end. All the rest are for joining a rope to a non-rope, or joining two non-ropes via a rope, leading me to wonder if I misunderstand what "splice" means.

There are plenty of splices on the site for joining two ropes near their ends, but they aren't in "splicing". There is the Double Fisherman's knot, which is described as being for securely joining two ropes of similar size, which is listed under "climbing" and "scouting". There are similar cases of splices in "fishing" and "boating" and some other categories.

<comment><USER17> I think you may be looking for a "bend" rather than a "splice".

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

</comment></comment><comment><USER24> grog knots is also a nice app from the same folks:

[https://itunes.apple.com/us/app/animated-knots-by- grog/id376...](https://itunes.apple.com/us/app/animated-knots-by- grog/id376302649)

[https://play.google.com/store/apps/details?id=com.animatedkn...](https://play.google.com/store/apps/details?id=com.animatedknots.knots&hl=en)

It's worth having a hardcopy version of Ashley's Book Of Knots if you're really into this sort of thing... but for (my) practical purposes, i prefer John Long's "Climbing Anchors".

<comment><USER25> Long's books are definitive in the world of climbing, but the knots he teaches are limited by the needs of climbers. He isn't big on slip knots or knots that require tension (sheepshank) because those aren't safe for climbing. Knots for lashing and knots designed for natural fiber rope are similarly absent. Many a climber thinks they know knots until asked to lash a pair of ladders together.

Ironically the most common knot in all climbing, the one used by virtually every climber every day, isn't in Long's books. He doesn't teach how to lace and tie your climbing shoes. There are right and wrong ways. I have seen a climber injured by incorrectly tied boots. They hurt their foot and couldn't remove the boot quickly because the laces were all wrong.

[https://www.fieggen.com/shoelace/caf-combat-boot- lacing.htm](https://www.fieggen.com/shoelace/caf-combat-boot-lacing.htm)

<comment><USER24> i'm a 5.10 moccasym convert :)

as generalist all-day cragging shoes go, they're very hard to beat.

</comment></comment></comment><comment><USER26> This is the kind of frame-by-frame guide that really helps me learn knots. For a while there, I was carrying a few feet of paracord in my work bag and would practice knots.

<comment><USER27> Ha! I still do. Well, technically, I work from home, but my paracord is always next to me. If I'm stuck on a problem, I'll tie a few knots and then go back to work. It's really helpful in several ways.

</comment></comment><comment><USER28> I was pretty interested in why someone would create such a rich and detailed resource without any clear monetary incentive (yes, capitalism makes me cynical), so I checked out the "Grog Story" section, and wow, I highly recommend it: [https://www.animatedknots.com/grog- story](https://www.animatedknots.com/grog-story)

The site is the years-long passion project of an anesthesiologist from South Carolina who happens to love making websites, along with his two sons. He's also an avid sailor, holds patents on medical devices, and creator of a bunch of other similarly niche sites devoted to subjects like stereo art, napkin folding, and magic squares. What a guy!

</comment><comment><USER29> I love learning how to tie new knots. My problem is that, unless I use them regularly, I tend to forget how to tie the more complicated ones. My go-to knots are the bowline, sheetbend, tenter's hitch, the alpine butterfly, and the bloodknot, for joining fishing line.

Great site!

</comment><comment><USER30> Seeing the amount of tail left for the bends that are listed as alpine worried me. They should really all be able to take one knot inversion without capsizing.

As someone who climbs I'm surprised that the EDK is not high up there.

</comment><comment><USER31> This is just wonderful, love it when I see a site on HN with well-structured and displayed information on a physical skill. Gives me a reason to move away from the screen for a while :).

</comment><comment><USER32> Great looking site. I just grabbed the app because I've been using the "What Knot to Do" app forever now, but find these animated single page descriptions more concise!

</comment><comment><USER33> Random thought: a VR app that gave you "hands on" guidance and experience tieing knots would be an interesting way to learn them.

<comment><USER34> This would need some kind of force feedback mechanism, I can't imagine tieing a knot without resistance of the rope.

<comment><USER33> I feel it could still help people learn, by letting people step through the movements involved, and seeing it from a more natural visual perspective. Resources like this post's website (obviously) don't involve resistance but are still useful.

</comment></comment></comment><comment><USER35> The Trucker's hitch is all I need to know. 🇸🇯

<comment><USER35> So HN app swallowed the music note emoji I put in as a clue for those who don't know the song.</comment></comment>


Kotlin Features I miss most in Java - <AUTHOR> https://blog.simon-wirtz.de/kotlin-features-miss-java/ <comment><USER2> I've been writing quite a bit of Kotlin, lack of semicolon isn't a great idea in my opinion.

The problem is that while Java is newline-agnostic (newline is just another whitespace), Kotlin has some rather difficult rules to determine the what a newline does.

Granted, the rules are not quite as insane as those of Javascript, but I find it very unsatisfying newlines are sometimes significant, and sometimes not.

And just to make it clear where I'm coming from on this topic, my preferred language is Common Lisp, so I really prefer consistent syntax.

<comment><USER3> Yep. Consistency beats "syntactic noise". In fact lack of consistency _is_ noise. If semicolons are always present, then my brain filters them out. If they are never present then great (yay! Python)

However - _occasionally_ present or absent semicolons means I have to think about each situation - at least to a small degree.

<comment><USER4> The only place when you _really_ need semicolons Kotlin are the enum constants, everything else can be considered "strictly no semicolons", so pretty consistent.

</comment></comment></comment><comment><USER5> This article wonderfully communicates the same feelings I have after writing Rust, and having to write C/C++ for my day job. I regularly encounter situations where I could do it clearer, safer, or clearer _and_ safer in Rust, but instead I just return a null pointer.

<comment><USER6> I have taken to, where possible, using something like this:

        template <class T>
        struct Optional {
          T value;
          bool hasValue;
          Optional():empty(false) {}
          Optional(const T& value):value(value), empty(true) {}
          // Also T move ctor, copy ctor, etc.
        };

And I try to make sure that all my structs' "empty" state can be set by memset(0). Pointers are a bit tricky, especially strings, but for them I kind of like this:

        class MyString {
          MyBuffer *buf; // Pointer to refcounted shared storage, i.e. CoW string
        public:
          const char *cStr() {
            if (!buf || !buf->chars) {
              return "";
            } else {
              return buf->chars;
            }
          }
        };

In short,

1\. Try to design structs such that they can be memset(0).

2\. Try not to return NULL pointers, if possible. Maybe keep static empty instances to return instead of NULL pointers.

Of course, the overhead of that approach is not always acceptable, but when it is, I find that it significantly simplifies the code that uses such classes.

<comment><USER5> Unfortunately for me, all of my C/C++ is in the embedded space (by that I mean, I am _thrilled_ to do embedded programming. but it's C), so a lot of the nicer features of C++ either aren't available to me (unsupported by the compiler), or are too expensive to use (dynamic dispatch, exceptions). Your Option implementation is definitely interesting; I may crib it some day. Half my consternation comes from an itchy feeling of "why am I inventing this, when Rust already does it!" that perpetually nags at me. It's entirely a hangup that I make myself get over, but it's still there.

</comment></comment></comment><comment><USER7> It's funny, this article starts with my least favorite features of Kotlin - ones that save a few keystrokes, but at the expense of readability.

And then it fails to mention so much of the very best stuff in Kotlin: Extension methods (No, Java 8's default methods are _not_ a substitute.), unifying the type system, covariance and contravariance instead of those wacky wildcards, kicking checked exceptions to the curb. . .

</comment><comment><USER8> C++ features I miss in Java:

* unsigned ints. Even Java's 8 bit byte is signed??!

* operator overloading, mostly for math like matrices, vectors, complex numbers

* containers of primitives

* ability to write a "swap" function (pass by reference)

* compiler that turns readable code into good assembly (no verbose code needed due to simpler code introducing stray stringstream objects and things like that, ...)

* destructors that reliably do something at end of scope

* no need to write typename twice to create an object (altho C++ std lib on the other hand requires writing container name twice for begin and end for sort and other algos and has horrificly inconvenient number to string conversions so that part I don't miss)

* ...

<comment><USER9> Signed-only ints is really painful when working with binary formats, for sure. But the rules around unsigned vs signed ints in C/C++ are pretty painful. -fwrapv shouldn't exist.

There is a library (GNU Trove) that provides specialised containers for primitives. It'd be nice if the language had them built in, but they're only quite rarely needed it seems. Normally there's some wrapper type involved.

Java has scoped 'destruction' (called try-with-resources).

An equivalent for 'auto' is coming to Java, though Kotlin has it already.

<comment><USER10> > Java has scoped 'destruction' (called try-with-resources).

This is nicer than manually writing `finally` blocks, but it's nowhere near as nice as RAII-style destructors, which you can't accidentally leave out.

<comment><USER11> Sure you can, you just need to allocate them on the heap and forget about calling delete on them or not properly handle exceptions.

Not everyone is writing C++ as they should.

</comment></comment></comment></comment><comment><USER12> In the opposite direction, the main thing I miss in kotlin is Java's package- private. Kotlin's internal is not really a replacement since it operates at the module level which makes it more useful for library developers. Kotlin's strict rules about not allowing tighter scope in the constructor of a looser scoped class breaks my Dependency Injection pattern of injecting package- private classes into the one public class in a package. Basically everything in kotlin ends up being public.

</comment><comment><USER13> I haven't written more than a couple lines of Java in probably the last ten years(I did maintain a small Swing app for a while before that) but to me a lot of what he calls syntactic noise I call clarity. I would call having and using multiple syntax's to do the same thing is nothing more than noise that hampers long term maintainability.

Many, maybe most large teams maintaining large code bases end up telling their static analyzers to disallow this sort of thing for this exact reason.

Many ways to do something is easier to write, a single way to do something is easier for future you to read.

</comment><comment><USER14> I wish comparisons to Java would use Lombok. I'm never going to actually write something that verbose in Java.

<comment><USER15> I was going to write something similar. My takeaway from the article is that Kotlin is perhaps a very minor improvement over Java + Lombok + some functional libraries like Vavr.

This is actually my biggest complaint about Kotlin; it doesn't bring much to the table that is very new. If I'm going to move on from Java I want something more exciting like Ceylon's union & intersection types (which I get to use in... Typescript).

<comment><USER16> As a non-Java dev, Lombok seems like the kind of thing that could only be tolerated by Stockholm syndrome java devs :/

I mean, it's a clever solution and the site/documentation is great. But tossing around annotations everywhere feels hacky as hell, not to mention that it only works with IDEs. I'm sure the combination you mentioned approaches Kotlin in terms of features and QoL improvements, but it's just so much nicer to have these things built into the language. Plus, Lombok is mostly constrained to boilerplate reduction - Kotlin may not be as "crazy" as Scala, but it still has some really nice modern features that java doesn't have/can't have/won't have for a long time.

<comment><USER15> As a polyglot, I don't understand your problem with annotations. These really aren't different:

        @Getter @Setter String foo;

        attr_accessor :foo

It's unfortunate that Java chose the silly capitalization convention for properties instead of something more structured like C#'s get/set, but that's really an aesthetic complaint.

</comment></comment></comment></comment><comment><USER17> Re "data classes" example in this article - Common Lisp features I miss most in Java (besides macros):

\- multiple return values - basically doing what the author is doing here, without introducing a new class for it,

\- destructuring - assigning pieces of composite object into several variables (see e.g. destructuring-bind, or what pattern matching does in many languages).

Basically, I often find myself wanting to write this:

      return {listWithResults, someBooleanFlag};

or

      return {listWithOneGroup, listWithOtherGroup};

and then use it like this:

      List<Foo> matchingResults;
      List<Foo> nonMatchingResults;
      boolean flag;

      {matchingResults, nonMatchingResults, flag} = functionReturningMultipleValues();

or:

      Foo first;
      Foo third;
      List<Foo> rest;
      {first, _, third | rest} = someList;

etc.

<comment><USER18> If you want to stay in the JVM, Scala supports some pattern matching, including your examples:

      def functionReturningMultipleValues() = (List(1), List(2), false)
      val (l1, l2, b) = functionReturningMultipleValues

evaluates to:

      l1: List[Int] = List(1)
      l2: List[Int] = List(2)
      b: Boolean = false

and

      val first :: _ :: third :: rest = List(1, 2, 3, 4, 5, 6)

to

      first: Int = 1
      third: Int = 3
      rest: List[Int] = List(4, 5, 6)

Of course, if you already are familiar with Common Lisp, Clojure might be a better choice.

<comment><USER17> Thanks. Unfortunately, with the project I'm working on, I'm stuck with Java the language - otherwise I'd have already replaced it three times with ABCL, Clojure or Kotlin.

</comment></comment></comment><comment><USER19> Someone should write "Scala features I miss most in Kotlin"

<comment><USER20> No, that's not how it works. No one is forced to write Kotlin I don't think. Plenty of people have to use Java.

The fact that Kotlin is a simpler language than Scala is a feature, not a bug.

<comment><USER21> Is Kotlin actually simpler than Scala? It seems to be less powerful in a lot of ways, but on the other hand, it looks like a lot of Kotlin's features are special-case things, whereas Scala's features are largely orthogonal and composable.

I haven't really used Kotlin much, so I may be wrong, but that's the impression I get.

<comment><USER3> > Is Kotlin actually simpler than Scala?

Unless Scala has radically been pared back in the couple of years since I read about it or I was seriously misinformed at the time, then I'd say it probably a yes.

Scala has the reputation for being at the complex end of the language spectrum. Is that undeserved?

<comment><USER22> It's both... simultaneously.

The "feature set" really is smaller than Java or Kotlin (especially if you count in terms of "keywords as features" and ignore things included for Java compatibility).

The flexibility though can be genuinely overwhelming (the name, scala[bility], refers to scalability of the syntax, not performance). Both in terms of the syntax flexibility , e.g. where curly braces are optional vs not or different ways of writing lambdas, and powerful/flexible features like implicit. However there are very rarely special cases to these, it's all very consistent once you know the rules.

Even the infamous underscore is "logically" consistent in it's use, it's just a placeholder in both contexts you typically see it used (context of variables and context of types).

Even my go-to example of a special case in scala, vararg unpacking:

`foo(myArgs: _*)`

Despite being a special case actually reads kind of consistently.. it reads like a type ascription[1] asking for myArgs to be treated as a varargs of whattever type. So consistent with other "type context" usages of underscore despite otherwise being weird.

[1] [https://docs.scala- lang.org/style/types.html#ascription](https://docs.scala- lang.org/style/types.html#ascription)

<comment><USER23> > refers to scalability of the syntax

And the flexibility of the type system and the advanced type inference.

</comment></comment></comment></comment></comment></comment><comment><USER24> Regarding the conciseness of lambdas and collections, why doesn't Java offer methods such as map(), filter() etc directly in AbstractCollection? The implementations would then delegate to stream internally, so no need for the programmer to invoke stream(). I realize there are different kinds of streams, but having a sequential stream as a default would be useful. That would be one step closer to the Kotlin example.

<comment><USER25> maybe backwards compatibility?

<comment><USER26> How exactly adding map() is not backwards compatible?..

<comment><USER27> Adding methods to non-final classes is always incompatoble. If you had your own implementation of list and its interface suddenly requires new method, how should it behave?

<comment><USER26> map() in AbstractCollection will obviously have some default implementation, which will be used by all child classes.

</comment></comment></comment></comment></comment><comment><USER28> Note that at least one of the features described, (static) Null-Safety, can be achieved in Java via annotation processors. For example, by a tool such as NullAway ([https://github.com/uber/NullAway](https://github.com/uber/NullAway)). Yes, adding '@Nullable' is more verbose than '?' (thus is the Java way :) ). But there are plenty of projects were it still makes sense to use Java over Kotlin. This is particularly true for existing codebases, where adding annotations is certainly easier than rewriting everything in a different language.

Disclaimer: I am a contributor to NullAway. There are plenty of other nullability static analysis tools for Java worth considering (Checker Framework, Eradicate, etc). NullAway's main strengths are a focus on performance and the idea that you should be able to use it as part of every (local) build of your code.

<comment><USER29> Kotlin has the best java interop for any of the JVM languages, so you don't have to rewrite everything in kotlin . You can gradually migrate while using the same tooling.

<comment><USER30> And related to the parent comment: Kotlin's compiler understands several kinds of @Nullable/@NotNull/@Nonnull annotations, and treats them as Kotlin's nullable/not nullable ("@Nullable String" is treated as String?, for instance). In the other direction, Kotlin's nullable/not nullable is visible to the Java side as one of these sets of annotations (IntelliJ's IIRC), which allows for instance annotation processors like Dagger 2 to know when something can be null or not.

</comment></comment></comment><comment><USER31> Oh Vert.x, I despise it. We jumped on that in 2014 (Vert.x 2) and it's still haunting us. Half-broken build with an outdated Gradle plugin (should've stuck with the official build system), doesn't integrate with the major part of the Java ecosystem due to being callback-based (exceptions can hardly be used, nor can anything that blocks on IO) and tooling for managing tasks doesn't exist either (e.g. running a couple of IO-tasks in order requires you to nest the callbacks if you don't write your own tooling).

I assume Vert.x 3 is doing a better job there, but the fundamental problem remains: callbacks don't work well with exceptions. Maybe Kotlin helps wrapping this nicer, I don't know. All I know is that I'll be more careful when selecting a framework for productive use now. And maybe that I won't be using Vert.x again.

<comment><USER32> As a Node.js dev: don't hold your breath waiting for better exception support in callback-based asynchronous code. Node didn't really have a procedural legacy; it was always async (sorta), and exceptions are _awful_ to try to reason about with callbacks. Then we got Promises, which made it worse. Now we have async/await, which helps restore typical exception behavior a bit . . . until you have to integrate with any code written in a callback- or promise- oriented style (anything older than 15 months, almost all of the standard library).

In general, I think without language-level support for continuations (callbacks, coroutines, promises, async-"colored" functions, whatever), projects like Vert.x are going to cause a lot of friction with regards to exceptions. Having a large synchronous legacy to contend with doesn't help either.

<comment><USER5> I don't mean this to be flippant: there's a Javascript standard library?

<comment><USER33> Its small but there is one. Thats where you would find stuff like Math, string, json, promise.

</comment></comment></comment></comment><comment><USER34> Nice write-up of the pain points in Java. Though, aggregating and mapping over (in Java or not) (possibly infinite) streams is not really the same as doing that over containers. In other words, Java8 doesn't have the ability to flatMap et al. an arbitrary container, unlike Kotlin or Scala.

</comment><comment><USER35> Honestly I don't understand point of data classes. Why was it introduced into language? The only time when I'm implementing equals/hashCode is when I'm going to use this class as a hash key and it's quite a rare situation. Why introduce a keyword just for that? Am I missing something? I'm using Kotlin and I'm just using classes without data modifier, they work just fine.

<comment><USER36> It's really easy to throw a data obj into a map/set and forget to check that it correctly implements equals+hashCode. Or add a field to a data class and forget to update equals/hashCode. Or log a list/set/map without realizing that the toString is just going to print some useless hash code. Data classes handle all of that for you, automatically.

</comment></comment><comment><USER37> I tried kotlin again but personally (I would surely take it any day at work) it's in a bad spot. It makes me miss python cuteness (zero start time and dynamicity) too much, so if I need functional on JVM thing, I'll end up writing some clojure.

</comment><comment><USER38> Mostly looks like C# syntax to me

</comment><comment><USER39> My favorite is the null checking. The '?.' operator is GOLD.

</comment><comment><USER40> Is there any benefit of Kotlin vs C# except JVM support? Why not work on a great C# to JVM compiler instead of inventing a brand new language?

</comment><comment><USER41> Java is commonly criticized for being too verbose, but I never understood why. I agree it is verbose, but verbosity isn't really that bad of a problem. Programs aren't harder to write, they aren't more bug prone, and they aren't harder to understand. On the contrary, high verbosity means less information per token, making it easier in my opinion to read.

A good example is the anonymous class. They are portly and wasteful of vertical space, often costing 5 lines when one would due. But, the amount thinking per line is greatly reduced. In order to visually afford anonymous classes, logic must be simplified or structured, commonly by splitting up a larger function in order to fit it on a single screen. An arguable misfeature of the language has a convenient side effect of forcing best practices.

<comment><USER42> Couldn't this same reasoning be used to argue that we don't need for loops or functions because we have GOTOs? Boilerplate is tedious and error-prone to write and to read/understand in my experience.

<comment><USER41> It cannot. The syntax bloat forces structural cleanliness. A lower level problem is addressed with a higher level fix. It would be better of course to not have bloated syntax, but not at the cost of better program logic.

As for tedium: Java programmers rely heavily on IDEs to "write" most of the boilerplate for them. The IDE fills in tokens automatically, and hides them visually with +/\- boxes to the side.

<comment><USER43> But if the bloat is hidden, how is it forcing structural cleanliness?

<comment><USER41> Personally I don't hide it, and I do type each token by hand. Since the parent brought up tedium, I wanted to mention that there are solutions to it. IDEs hide bloat, but code review and other tools often don't.

</comment></comment></comment></comment></comment><comment><USER44> It seems like Kotlin is similar to Dart in many ways. New languages like them are able to be more concise while Java is stuck staying compatible with its past.</comment>


Feedback before applying - <AUTHOR> Posted late last night but decided to delete and try in the morning but i wanted to see if my github profile (https://github.com/soterox) who be enough to get an intern, apprenticeship, or junior role as ruby on rails developer. At the moment there is only to projects in my github And one is not finish, i do have a michael hartl project I haven't uploaded yet but i would like to get feed back on if i should upload more or add more features or do you think i might have a chance of be accept. Chicago area or remote would be ideally <comment><USER2> I am a developer, though not a ruby dev. Based on my experience, one hack to increase your chances is to have a targeted relevant project on Github. So, for e.g if you are applying to an e-commerce shop, have a simple e-commerce project on github. Then when you are applying to a similar shop, you can fork/mod it to make it more relevant. If you know their market, you can then share some ideas you may have that will have a positive impact on their website, performance, market penetration, SEO, whatever. Screenshots and videos will just make them melt.

<comment><AUTHOR> Thanks, thats really a great advice

</comment></comment><comment><AUTHOR> ________________________*

 __1 of the 2 project is a pinterest clone deployed to heroku that uses features like devise and alittle bootstrap that allows people to upload images with written descriptions about that image

 __Next project is an incomplete file cabinet at that is currently put on hold while i finish Michael Hartl project.

\---My main focus for building these apps where to gain a better understanding of rails which is why I did not spend time with styling.

</comment><comment><USER3> My only advise would be to find 1-2 sentences that would explain exactly what you've built. I would post it here on HN to get the feedback you want. I would also mention these sentences in your application. "This is why you should hire me", rather than here is the code I wrote. Most of the hiring process is about understanding the candidate.

That's my only advise.. we all know how to code.

<comment><AUTHOR> I appreciate your advice, with that said can you take a look at my new comment and let me know what you think. I didnt include the "why you should hire me part" though</comment></comment>


Facebook sues EU antitrust regulator for excessive data requests - <AUTHOR> https://www.reuters.com/article/us-eu-facebook-antitrust/facebook-sues-eu-antitrust-regulator-for-excessive-data-requests-idUSKCN24S2BN <comment><USER2> This is the part that troubles me about this:

> "The exceptionally broad nature of the Commission's requests means we would > be required to turn over predominantly irrelevant documents that have > nothing to do with the Commission's investigations, including highly > sensitive personal information such as employees' medical information, > personal financial documents, and private information about family members > of employees," Facebook associate general counsel Tim Lamb said in a > statement.

Why does FB even _have_ employee medical information and personal financial records? I can sort of understand how they might inadvertently end up with small snippets of medical information via their HR process ( _e.g._ Sally Software Engineer submits a request for maternity leave), but, other than possibly account numbers for stock accounts and deposit accounts, I'm scratching my head as to what they even _mean_ by "medical information" and "personal financial documents."

<comment><USER3> "Why does FB even have employee medical information and personal finanacial records?"

You are assuming that they have this information. However their argument is that the search terms "could" retrieve such documents. There is nothing here that confirms they possess these purportedly irrelevant documents that would be produced given the current search terms.

Usually lawyers will redact personal, sensitive information before releasing the documents. In the US, some courts make this an obligation. Also, usually there are some search operators to limit the results of the search to usage of the terms only in certain contexts, e.g., like the ones used in Lexis and Westlaw.

It is a new level of irony, hypocrisy and cognitive dissonance to see an unregulated, privacy-destroying tech company whose core business requires ingesting personal information from hundreds of millions of people at an unprecedented scale try to argue that EU regulators, who are probably limited by statute in what they are authorised to do with the information they receive, should not have access to information for the purposes of investigating Facebook's activities.

<comment><USER4> It's not a new level.

Cognitive dissonance is an essential requirement to work in Wall St, the MIL complex, Exxon, big tobacco, the gambling industry etc etc. They all have their own stories about how it's okay to exploit weakness in people.

They all reach a stage where to survive they cannot break with their stories. Cognitive dissonance is par for the course.

Facebook by adding the Like button to the Internet is basically giving out free dopamine in exchange for attention that they exchange for $$$. It's a modern legal unregulated drug peddling empire.

And all empires collapse because of their cognitive dissonance.

<comment><USER5> > Cognitive dissonance is an essential requirement to work in

oh, boo. this is a sophomoric examination that does not do justice to the subject being critiqued.

cognitive dissonance has become a buzzword and its incorrect usage is exemplified here. those people aren't struggling with a value conflict, they just have different values than you do.

the path to togetherness, thoughtfull discussion, and mind-changing lies with honest recognition and good-faith debate, not name-calling.

<comment><USER6> > cognitive dissonance has become a buzzword and its incorrect usage is > exemplified here. those people aren't struggling with a value conflict, they > just have different values than you do

But maybe, just maybe, their values are incompatible with the values that build up a society. And here is where the cognitive dissonance starts.

> the path to togetherness, thoughtfull discussion, and mind-changing lies > with honest recognition and good-faith debate, not name-calling.

That only works when all sides want this. I think it's pretty onbivous that any large corporation, doesn't want this kind of discussion. It mean admitting them doing a lot of cr*p in the name of profit.

<comment><USER7> Cognitive dissonance is a single person holding two contradictory views at once. A person holding views that contradict yours is not cognitive dissonance. "The values that build up a society" are not a universal truth.

<comment><USER8> That's actually incorrect. Cognitive dissonance means that someone's behavior, attitude or thoughts, beliefs are inconsistent. Or in other words someone participates in an action that goes against his beliefs, ideas, values. Which is exactly what the grandparent post refers to:

> _They all have their own stories about how it 's okay to exploit weakness in > people._

This is definitely inconsistent and in contrast with almost all the above mentioned entities' mission statement and their corporate values.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Reminds me of:

"Facebook Announces Plan To Break Up U.S. Government Before It Becomes Too Powerful"

The Onion, of course. [https://www.theonion.com/facebook-announces-plan-to- break-up...](https://www.theonion.com/facebook-announces-plan-to-break-up-u-s- government-bef-1844121902)

<comment><USER10> I kind of see it but it still seems like a stretch since lots of companies take legal action against governments for a variety of reasons. At face value the company is airing a legitimate concern/grievance and they're using the EU's own courts to explore the legitimacy of that grievance so it's not like they're subverting the rule of law somehow.

<comment><USER11> The problem is that whatever you'd search for, that term could and eventually would, by any means necessary, be found in "employees' health information, performance evaluation and even job applications to the company". Then again you can't not see the irony of the situation where FB is complaining that someone is requesting too much data from them.

> Facebook is also seeking interim measures at the Luxembourg-based General > Court, Europe's second-highest, to halt such data requests until judges rule

Having participated in such investigations I can tell you one thing for sure, whatever the final outcome of their initiative FB can only win from the respite this would provide. Evidence gets old and data retention policies just happen to kick in, evidence gets lost, evidence gets moved to another jurisdiction, etc.

I am taking the uncharitable interpretation because it's the most realistic.

<comment><USER12> I'm inclined to take the realistic approach: It's in their best interest to fight any anti-trust investigation, regardless on whether their denial is legitimate or not. A successful anti-trust suit could cost FB billions of dollars, which is well worth some overtime for a few lawyers to delay-delay- delay.

It's their lawyer's role to make every step of the legal process as painfully slow as possible.

</comment></comment></comment></comment><comment><USER13> Facebook being concerned about anybody's privacy is a good thing I guess.

What they should do instead of suing the EU antitrust regulator (good luck with that) is to comply with the request and leave out or redact those things that they feel would breach employee confidentiality, and enumerate where they've done so with specific reasons as to why a particular item has been left out.

What will happen now is (1) they will lose this lawsuit; (2) will have to pay costs and (3) will still have to cough up the data. So I interpret this as a stalling action to buy time to figure out how they can not get to (3) in some way or other. Maybe they'll lose the data somehow.

As an employer I don't hold any such data on my employees, and neither should Facebook. They are right that legislators / the antitrust entity has no right to this information, but the best way to achieve that is if they didn't have it in the first place.

Facebook employees should wake up and see that it is _their_ rights being violated by Facebook here, the anti-trust entity is not the one that is at fault.

<comment><USER14> Just trying to delay and _maybe_ they'll win, nothing really to lose by suing. FB doesn't care about courts costs

<comment><USER13> You piss off regulators at your peril. In the end they're all people and being stymied is going to cause some kind of reaction, likely not one to Facebooks' benefit.

</comment></comment></comment><comment><USER15> > "... we would be required to turn over predominantly irrelevant documents > ... such as ... personal financial documents, and private information about > family members of employees,"

Sounds like the kind of documents useful for investigating (at least) fraud, kickbacks, and hiding assets.

So, EU antitrust regulator seems to be doing it's job (thus far).

</comment><comment><USER16> This is nothing more the a PR misdirection to evoke anti government sympathies. EU regulator has no interest in this information, and probably has not directly requested it. The wording says that the search terms $might$ return this information. So the lawyers can always redact it if these turn out, I'm pretty sure the regulator would accept it.

Disgusting company.

</comment><comment><USER17> Can I sue facebook for excessive data requests?

<comment><USER18> Sure, you can sue them for anything if you're willing to pay for a lawyer.

</comment></comment><comment><USER19> Wish I could sue Facebook for excessive data requests.

<comment><USER20> I wish they would request data instead of just taking it!

</comment></comment><comment><USER21> I feel like a lot of companies are about to discover why credibility matters, even if you're in a monopoly position.

Sure, FB can claim all these concerns all they want. Why should anyone trust them at their word, at this point?

</comment><comment><USER22> In terms of Facebook's longer term relationship with the EU, surely this is an own goal?

</comment><comment><USER23> It's funny to see this headline after reading [https://www.theonion.com/facebook-announces-plan-to-break- up...](https://www.theonion.com/facebook-announces-plan-to-break-up-u-s- government-bef-1844121902) earlier today.

</comment><comment><USER24> If this works. In future, i OK just attach sensitive information to illegal documents. (where the attached information is also illegal)

And every time a lawyer requests such information : nope, can't do. There might be illegal sensitive information attached to it!

</comment><comment><USER25> How do these things work with work from home? Activity at one's home or anywhere outside the offices is private, even if it's work-related. Could remote employees block such requests on the ground of personal privacy?

<comment><USER26> What are you talking about? Your employer shouldn't have access to your private activities in the first place. Just because you are out of office and you send a company email doesn't make it private.

</comment></comment><comment><USER27> Data requests are not our friend.

<comment> joe-collins Data aggregators even less so.

<comment><USER28> One is voluntary, the other is not.

</comment></comment></comment><comment><USER29> I didn't RTFA but assuming the requests were excessive, it's great to see Facebook defend themselves. Sad to see how beleaguered this company has become despite (IMO) having good intentions in an impossible situation where you can't make everyone happy.

<comment><USER30> Why would you assume that the requests are excessive and that FB is in the right? Given their track record against regulatory bodies it's quite rich to assume that and then derive a whole supporting comment out of it.

It's not sad, this is self-inflicted, FB played with fire and that has consequences, it doesn't matter how pretty to the outside their vision and mission statements are. What good intentions are there from FB? They talk the talk but don't walk the walk, and never had.

</comment></comment><comment><USER31> Get ready for some EU pearl clutching about data again

</comment><comment><USER32> Awww Facebook is concerned about privacy. Kinda cute, really.

</comment><comment><USER33> How the turn table

</comment><comment><USER34> The question to ask is: How many documents does it take to reach the truth? For Facebook, we may have found the answer.

</comment><comment><USER35> After Veritas, I can't even imagine the garbage that FB must be hiding.

</comment><comment><USER36> > EU regulators comb through documents looking for about 2,500 search phrases > which include "big question", "shut down" and "not good for us", said a > person familiar with the matter.

Is the text of the Commission's requests public? This paragraph seems to be implying that they're demanding every Facebook document containing any of these 2,500 phrases, which does seem pretty dumb if true.

<comment><USER11> > which does seem pretty dumb if true

Why is that? The alternative is to ask for _everything_ and keep what's valuable, kind of how companies like Facebook do. What other options do you see?

<comment><USER36> The alternative is for regulators to issue narrow, targeted requests for the information they need to investigate specific issues. I don't think the government should be able to tell a company "alright, hand over all your documents so we can make sure there's no evidence of wrongdoing in them".

<comment><USER11> > narrow, targeted requests

The investigators should ask exactly for the smoking gun, but they need the smoking gun to know exactly what to ask for. Imagine if when asking for a warrant the Police would have to say "we are looking for a knife on the left side of a shoe box under the defendant's bed". Oh the knife is wrapped in some tax returns and blood work results... bummer.

You don't need to go much farther than your average internet search to see that it's nigh impossible to search so narrowly that only the best result comes up from the first try and doesn't contain any irrelevant information. And that's before considering that unlike internet searches companies go through _a lot_ of effort to intentionally poison the well and mix up the now known search words throughout a big volume of irrelevant information to prove their point. This is what this request is about, buying that time.

As I already said, you can't not spot the irony when a company insists they need very broad access to _your_ data to monetize it, but complain when _regulators_ need access to their data as part as an official investigation.

<comment><USER37> ? The irony is the other way around. FB is free, users provide information, FB doesn't sell it or share it, they use it to place ads. The EU government is concerned about 'privacy' while asking a private, foreign company to hand over arbitrary private data.

Imagine the police pulling you over and asking you to show any emails which included the terms 'deal' or 'partying' or 'the green stuff'.

The investigators are probably barking up the wrong tree.

<comment><USER30> You are one of those that falls for the semantic trick of "we don't sell your data" [0].

A private foreign company isn't more powerful than the EU, there is no irony that a regulatory and investigative body wants private information concerning an investigation from a company operating under its jurisdiction. And a company that has a track record of strong-arming regulations and governments.

[0] [https://www.nytimes.com/2018/12/12/opinion/facebook-data- pri...](https://www.nytimes.com/2018/12/12/opinion/facebook-data-privacy- advertising.html)

<comment><USER37> I'm not 'falling' for anything.

I'm aware of how my data is being used by Facebook, and am generally unconcerned by it, as are most people.

Conversely, it would seem you're falling for the completely false claim made in the NY Times that somehow, placing ads on FB is somehow tantamount to 'buying customer data'. The article is making a bizarrely stupid claim.

"I am shocked that anyone continues to believe this claim. Each time you click on a Facebook ad, Facebook sells data on you to that advertiser. This is such a basic property of online targeted advertising that it would be impossible to avoid, even if Facebook somehow wanted to."

It's basically lying to suggest that someone placing ads on a network is remotely similar to, for example, Facebook literally selling user data directly to advertisers or anyone else.

You, I, everyone, we see the ads on Facebook, the means by which those ads are purchased is available for anyone to see and it's really not that big a deal. It's mostly demographics, location, and some degree of interest that usually isn't correct in the first place.

"A private foreign company isn't more powerful than the EU"

The EU and FB are bound by law, and it seems clear the EU is breaking it by making broad search and seizure during some kind of investigative discovery, and the EU courts will have to rule on it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER38> This shows the generation and technically challenged politicians that came up with this nonsense request. Agree on an API that is practical and fair and pay for the data transfer

</comment><comment><USER39> I don't use Facebook and think it's a waste of time for people who are addicted to it. However, I also don't think it's right that a bunch of gov lackeys in Brussels should be suing and fining US companies that have lots of customers & money. When they sue Google for $500M or whatever, where does this money go? To the supposed "victims", or to the EU gov coffers, to pay for more staffers so they can file more lawsuits?

<comment><USER40> If you want companies to follow rules, history has shown that only steep fines, or jailing executives work. Where the money goes isn't that important, it's a fine, and it's intent is to be big enough that following laws is cheaper.

They want to operate on the EU market, they follow EU laws. EU companies don't get to select which US laws to follow when active in the US.

That's probably only part of the story though, it might be a little more behind why this happens _now_.

US have worked to extend the reach of their laws outside the country for decades, aggressively. This is part of what's called soft power, which US has historically been quite good at. The current US administration has dropped the ball on soft power so hard its sad. Not only has it opened up for China in parts of the world where they barely got any play before, the emboldening we see in how China tries to assert jurisdiction over people outside China is almost certainly a direct result of these catastrophic failures of foreign policy. Not only Chine, but it's an extremely obvious case..

Anyway, that kind of _massive clownery_ on the geopolitical arena is going to have consequences. The massive power vacuum alone almost certainly enabled, but likely also forced EU's hand enforcing the laws more aggressively, at least to some extent.</comment></comment>


Bubble Pop – Addictingly fun iOS game - <AUTHOR> https://itunes.apple.com/app/apple-store/id1199812605?pt=1851843&ct=hacker-news&mt=8 <comment><USER2> Great game!!! Very addicting!!! Can't stop playing</comment>