Show HN: Find the email address of any GitHub user - <AUTHOR> https://github.com/hodgesmr/FindGitHubEmail/ <comment><USER2> You can get any email for a developer from their commits in the json api...companies like Entelo & TalentBin have discovered this a long time ago and appear to be reselling them to recruiters for about $500 a month. If you have seen an uptick in recruiter spam lately, now you know why.

What is interesting is I believe its illegal (can-spam) to email someone if _you_ harvested their email programmatically...but seems to be a clever hack around the law for a company to sell off a harvested emails to be emailed by someone else.

<comment><USER3> > _I believe its illegal (can-spam) to email someone if you harvested their > email programmatically_

Nope. You can email pretty much anyone in America, regardless of how you acquired the address (and provided you meet various other requirements about headers and content). The biggest criticism against CAN-SPAM is that it could be viewed as a license for every business to spam the planet exactly once (after that you have to start worrying about opt-outs).

Edit: Oops, now I'm not so sure... see below.

<comment><USER4> The CAN-SPAM Act has specific prohibitions (and extra harsh sentencing guidelines) for spamming harvested (or "dictionary attack") e-mails. Even if you meet all the other requirements to legally send unsolicited commercial e-mail, harvesting the addresses makes it illegal.

<https://www.projecthoneypot.org/law_of_harvesting.php>

<http://www.ftc.gov/os/caselist/0723041/canspam.pdf>

</comment></comment></comment><comment><USER5> Thanks for the useful tool! Email addresses are not secrets, and I can't count the hours I've wasted trying to email some developer who thinks that by keeping his email address off of his blog that he'll get less spam.

<comment><USER6> To be fair, you will get slightly less spam

<comment><USER7> but your ratio of genuine-email-from-strangers to spam will plummet sharply.

</comment></comment></comment><comment><USER8> I'm always fascinated when something like this appears on HN and it turns out to be a dozen lines of bash. I could easily imagine writing a hundred lines of a "better" language (Python, CL, Ruby...)to do the same thing. I guess it just speaks to the unreasonable effectiveness of Unix tools for certain classes of problems.

<comment><USER9> It could be better bash, e.g. using [[ instead of [. Also,

        curl -s https://api.github.com/users/$2/events/public |
        grep "\"gravatar_id\":" |
        sed -e's/[,|"]//g' |
        head -n 1 |
        awk '{print $(NF)}'

can be

        curl -sS https://api.github.com/users/$2/events/public |
        sed -n '/"gravatar_id":/!d; s/",//; s/.*"//p; q'

and so on.

<comment><AUTHOR> Pull requests are always welcome :)

</comment></comment></comment><comment><USER10> I thought this was going to be a reverse-MD5 on their gravatar url. Interesting to know this is there, too!

(As a possible improvement you could also take all possible matches and compare their MD5's to the gravatar URL.)

<comment><USER11> <https://github.com/hodgesmr/FindGitHubEmail/pull/5>

I'm not really that familiar with bash scripting so this might be a mess.

</comment></comment><comment><USER12> A small semantic question. If it is just one line of code snippet, doesn't a gist make more sense than a github project

<comment><AUTHOR> Perhaps. This was something I threw together around midnight last night. Instinctively I made a git repo, no knowing what it would turn in to.

</comment></comment><comment><USER13> This feels like nothing more than linkbait with no value-add. Emails are public on Github anyways, so simply browsing to github.com/<username> will show the users registered address. I guess it's almost interesting that it can be done programmatically, but I never suspected anything less.

<comment><USER14> Not everyone includes their email in their GitHub profile. For instance, the creator of this tool's profile at <https://github.com/hodgesmr> does not include his email address.

This tool does not rely on email addresses being in profiles. It can look up the email addresses used in commits in the user's repos, and use heuristics to choose the most likely one.

<comment><USER13> Thanks for the clarification

</comment></comment></comment><comment><USER15> Title should be corrected, as it doesn't get the email address of all users, only those with public activity. A team member on a private org repo I'm a part of has no public activity on Github, and no email is returned, even using -a.

</comment><comment><USER16> Auto-delete all messages that contain the phrase "my client" and you'll eliminate 90% of spammy recruiter emails in my experience.

That's the goal, right? If the recruiter had an amazing, what you've always wanted kind of job for you, you'd probably want to hear about it. But if that were the case he'd take the time to find out what that opportunity looks like, and he'd probably just tell you the company instead of all the "my client" stuff.

<comment><USER17> Emails from lawyers also frequently contain the phrase "my client". You might not want to automatically delete those ones.

</comment></comment><comment><USER18> Interesting, but GitHub is the place I'm _least_ likely to want to email someone--since GitHub's staff is actually willing to deal with things like username squatting by defunct accounts.

On the other hand, if someone could tell me how to get someone's email address from their Tumblr or Twitter, I'd be eternally grateful. Stonewalls from both on the username-squatting front.

</comment><comment><USER19> Pretty obvious to those of us who use GitHub. Commit to a public repo under your email and people can see it? Not news.

<comment><USER13> You don't even have to commit. Simply having a github account means your email address is public; it even says this on the "Edit your profile" page.

</comment></comment><comment><USER20> Here goes my Version used to fetch the email addresses of your followers :)

[https://github.com/rShetty/Scriptomaniac/blob/master/github....](https://github.com/rShetty/Scriptomaniac/blob/master/github.sh)

</comment><comment><USER15> Running it against my username, the first email address it pulls is the email of someone who contributed to one of my projects, not mine. (using -a does also include my address)

<comment><USER11> Try -g ;)

</comment></comment><comment><USER21> Honest question - why is this news? (And why was it also news yesterday?)

<comment><USER22> I don't think it is as much news as a hack (which is completely relevant for this forum). The reason for its attraction is because most of the demographic here utilizes github and cares about privacy.

<comment><USER23> if privacy is a concern, don't make commits to a public repository

<comment><USER24> Thats exactly why its a news. Many didn't realize that the email and other particulars would be out in the open.

Its like knowing that my details are now public because I posted on HN when I expect only my posts to be public ... (Just an example as HN doesn't require an email id)</comment></comment></comment></comment>


Redecentralization: building a robust cryptocurrency developer network - <AUTHOR> https://blog.conformal.com/redecentralization-robust-developer-network/

<comment><USER2> _We do not hold vast amounts of Bitcoins and have a vested interest in their increasing value, to the exclusion of other currencies, like the core Bitcoin developers_

In my view there is some truth in the leading part of that statement, ie. that the Bitcoin foundation may be considered to be partly Bitcoin-blinkered and there are causes for concern around conflict of interest.

Most recent example: Jon at the Bitcoin Foundation explained that his failure to get an ISO4217 code from SIX Interbank Clearing in Switzerland was because they said such requests must come from an existing, recognized national bank. That means a UN-approved nation with an ISO code, and the central bank thereof. Which central bank worth its salt is going to stick its next out to hasten challengers to national currency? Even if one did, they may come up with another excuse: the criteria for codepoint acquisition do not appear to be publicly available. So I put X-ISO4217-A3, a proposal for a registry of IANA-managed, non ISO-approved currency-like commodities with nominally ISO4217 compatible codepoints as such has been the community's habit for new cryptocurrencies. Well, you'd think they would have some positive outlook on such a development - but instead they did nothing. When hastened they simply said "we'll wait for the ISO to suddenly approve XBT". I think that's a clear demonstration of Bitcoin-centrism, and it's not a good thing for the broader community. I think IANA or a for-purpose blockchain should get involved as a registrar to keep things open and transparent, ASAP.

Well done on this article, I think we need more of these posts that draw community attention to the big picture.

<comment><AUTHOR> bitcoin is obviously a great system, but to just accept it as the next financial system is missing the larger point with cryptocurrencies: they are a significant step in the evolution of banking, an industry that has traditionally been very slow-moving and centralized. accepting a new system where the developers, who essentially replace the central bankers, are a small group who wield substantial power and can act without a wide consensus seems like a step backwards after taking a step forwards.

<comment><USER2> Right. Do not forget a small clutch of community-approved and government- tolerated exchange businesses forming a second circle of effective monopoly.</comment></comment></comment>


Coin: No more sales, selling wearables tech to Fitbit - <AUTHOR> http://blog.onlycoin.com/coin-wearable-payments-platform-acquired-by-fitbit <comment><USER2> While no longer having access to your money is not the worst nightmare IoT scenario, the futility of digital credit cards usurping physical ones is exasperating. Coin never reached support for more than 85% of credit card processors in the field, and with their acquisition, this now trends to 0%.</comment>


A huge crack is spreading across one of Antarctica's biggest ice shelves - <AUTHOR> https://www.thestar.com/news/world/2016/08/22/a-huge-crack-is-spreading-across-one-of-antarcticas-biggest-ice-shelves.html <comment><USER2> > "I have spent so much time now looking at the satellite images, and I really > love this ice shelf, it would be such a tragic thing to see this thing go."

Reminds me of Kim Stanley Robinson's Mars trilogy. We humans can fall in love with large chunks of ice just by looking at them long enough. How will we ever bring ourselves to terraform another planet?

<comment><USER3> Why is it so important that we terraform other planets? Is it really a desirable thing to spread across the solar system and beyond like mold on stale bread?

<comment><USER4> Well, it's important to the mold.

<comment><USER5> Gasp!

Could we be... just a means for mold to spread across the universe?

</comment></comment></comment></comment><comment><USER6> There hasn't been very good news from the Antartic lately.

After seeing the reception Brian Cox received lately by Australian senator Malcom Roberts on an episode of QanA it's pretty clear we have no hope in world leaders doing anything significant about it. There is way too much self- interest and sociopathic behaviour going on by the majority within these circles of governance and "power".

Too many of us are waiting for the UN to just fix this issue; however, we've relied on the UN and it's narratives of change for too long and the truth is, we the masses need to change our own behaviour, it's our responsibility, somewhere we lost our way. I know there are good people working in these organisations and others like it, doing really good things, there just isn't enough of them or they're not having a big enough impact.

It seems pretty clear that democratic governance has severely failed us on this issue and many others in recent years, and as a society I think we need to try to understand why and correct it. Democracy is obviously not a bad idea, but in most western countries, the current configuration seems to be problematic and corrupt. It's not sustainable.

I have a strong feeling it's now too little to late and the only hope now is to take matters into our own hands by ignoring what democratically elected "leaders" are telling us they're doing and start doing it, get our own hands dirty. Divest, install solar panels (decentralisation of power production is important), consume, travel, eat thoughtfully, don't have so many kids etc.

By the look of it, the only way to make it through the madness ahead will be kindness and compassion for the earth, all living things and each other . If not, mother nature will each us a very harsh lesson, I think she is already starting to balance the books.

Unfortunately this storm is not just going to blow over, it would be nice if it would, but it's not going to.

<comment><USER7> > decentralisation of power production is important

Why?

<comment><USER6> Because it means there can then be no single monopoly on electricity generation, nor are people forced into consuming power which is being generated in a way that does not align with their core values.

This was the situation in Australia until fairly recently, people wanted alternatives but there wasn't any renewable options, then when the Government changed and pulled rebates for new solar installations, it was even more unthinkable for people to get started.

Also, I'm not arguing for complete and utter decentralization, but there needs to be options.

</comment></comment></comment><comment><USER8> From the article, regarding sea level rise:

      When ice shelves lose large chunks, it does not raise sea level because these
      bodies are already afloat. However, the loss of an ice shelf can speed up the
      seaward flow of the nonfloating glacial ice behind it, and this ice can in turn
      contribute to sea-level rise. Researchers have estimated that the loss of all
      the ice that the Larsen C ice shelf currently holds back would raise global
      sea levels by 10 centimetres.

<comment><USER9> The faster that levels rise the sooner we are to get off our collective asses and make a difference.

<comment><USER10> True, but the longer we have to sit on our asses, the more likely we are to succeed in our effort to make a difference when we finally get around to it (due to technological progression).

<comment><USER11> I wouldn't count on this - markets don't seem to care about sea level rise at the moment

<comment><USER12> The wealthy do love their ocean-view properties, though.

<comment><USER13> The wealthy can afford to move their properties back/up a few feet.

</comment></comment></comment></comment></comment></comment><comment><USER14> Does anyone know where I can find estimations of sea level rise over the next 10 to 200 years?

I always hear horror stories of 20 meter rises but don't know what the ranges of "consensus" are...

<comment><USER15> Seems likely that the "Bathtub Model" we have in our heads is all wrong, and sea-level change is going to be highly variable in different parts of the planet. Go and watch one of Jerry Mitrovica's videos[1] to get a good idea... According to his models, some places will likely see sea-levels _fall_ by as much as (iirc) 25m, to others where sea-levels will rise by 5 to 8m by the end of this century. Goodbye ports, goodbye containerised shipping, goodbye global trade.

[1] [https://www.youtube.com/watch?v=RhdY- ZezK7w](https://www.youtube.com/watch?v=RhdY-ZezK7w)

<comment><USER16> Thanks. He isn't actually saying these numbers (-25 m, 8m) are expected in 2100, he's stating that the peak higher sea level in the older but comparable times (that is during [https://en.wikipedia.org/wiki/Eemian](https://en.wikipedia.org/wiki/Eemian) around 115 kyears ago) was up to 7 meter higher on the extreme points. Which is a good illustration that the "bathtub mental model" is false. The Intergovernmental Panel on Climate Change (IPCC) is much more constrained to cite that, they present the following (the 2013 results):

[https://www.ipcc.ch/pdf/assessment- report/ar5/wg1/WG1AR5_Cha...](https://www.ipcc.ch/pdf/assessment- report/ar5/wg1/WG1AR5_Chapter13_FINAL.pdf)

The worst projected total average increase at 2100 is around 40 cm _if we do some corrections in our fossil fuels use_ and around 80 cm (on average) if we don't (so called "business as usual", they technically call it "RCP8.5" (1)). The local increases (which we now know can be significantly different) are drawn with the scale up to around 1 m for the "some corrections scenarios" if I understood. But it will go up afterwards for hundreds of years, and it can't be stopped.

Mitrovica believes these are too conservative as even the current measurements already hit the upper bounds. It seems anyway the world is more or less behaving in the "business as usual" sense regarding the fossil fuels.

1) [https://en.wikipedia.org/wiki/Representative_Concentration_P...](https://en.wikipedia.org/wiki/Representative_Concentration_Pathways) It's worth always looking at the RCP8.5, as that's what's going to happen if no significant changes happen. It's not "the most improbable" but "the most probable if nothing changes" and I admit I personally tend to see the graph with more paths as "OK this one is the highest, it's extreme" when it's the default one!

</comment></comment></comment><comment><USER17> If we took a fleet of tug-boats and towed this ice to the Middle East, I wonder how long the fresh water would last?

<comment><USER18> An interesting theoretical thought exercise.

The money and fuel bill for tugboats sufficient to move that would probably be better spent on massive fields of photovoltaics and electricity-intensive seawater desalination equipment...

<comment><USER19> What about nuclear powered boats? Russia has a fleet of nuclear powered ice breakers.

<comment><USER20> 6000 square kilometers of ice.

<comment><USER19> Take smaller chunks of it.

<comment><USER21> How small to become profitable? You'll see, this ends in a no win situation fast. Sadly enough.

</comment></comment></comment></comment></comment></comment><comment><USER22> 350 meters thick? Global warming or not, how could it possibly get that thick without cracking sooner is surprising to me.

</comment><comment><USER23> When it gives way, might there be a surge-wave that causes trouble when it hits land elsewhere?

</comment><comment><USER24> It's worth noting that the title of the article is somewhat misleading. The ice shelf entirely is slightly smaller than Scotland, but the part breaking off is (upper estimate) 12% of that, so, according to the article, slightly larger than Prince Edward Island.

Not that this is reason to celebrate or think that this is any more than a continuation of the ongoing and forthcoming climate excursion.

<comment><USER25> Thank God it's only a motion picture! [https://en.wikipedia.org/wiki/Crack_in_the_World](https://en.wikipedia.org/wiki/Crack_in_the_World)

</comment></comment><comment><USER26> Another scary recent article: "A business-as-usual approach by humanity makes 2035 a plausible moment for the permafrost to melt and methane to escape."

[https://www.theguardian.com/books/2016/aug/21/farewell-to- ic...](https://www.theguardian.com/books/2016/aug/21/farewell-to-ice-peter- wadhams-review-climate-change)

</comment><comment><USER27> If you're ready to do something about this, consider volunteering for [http://brandnewcongress.org](http://brandnewcongress.org)

<comment><USER28> Alternatively: Use public transit, encourage friends and family not to be wasteful, invest in alternative fuel sources, vote for people who will use taxpayer dollars to invest in alternative fuel sources, so on and so forth.

What is anybody else going to do that you can't do yourself already?

<comment><USER29> While personal effort is laudable, and your kind of thinking is neccessary, it will not change things.

The decisions that can actually change something are made on government level and depend on believes ingrained into culture / society.

A nice example is Israel and it's shortage of water. There, children are educated from very early on (kingergarden) to be careful with and conserve water wherever possible. It's a common and accepted fact that they have little water and must preserve it.

But changing this kind of thinking for something way less observable and direct, such as global warming, is harder. And needs a unified effort by government, education and media. And takes decades.

<comment><USER30> Personal effort by itself can only achieve marginal changes, but political action without personal example will achieve nothing.

Politicians are not stupid. If the environmentalist grass roots do not believe in their cause badly enough to go and change their personal lives first, they will only receive token efforts and empty promisses. And that's because the politicians do (correctly, IMHO) assume than environmentalist only want to wash away their guilt, not achieve actual changes. As in, changes that will negatively affect their personal lives.

Of course, what environmentalist say they want is to have politicians affect everybody's lives... but in practical terms, that means to affect primarily the lives of those that are underrepresented in the political arena. Everybody else is going to push back when real cost come upfront. And since this is the same people that has been thrown under the bus by every other class and group of interest during the last few decades, they cannot be made to pay the cost.

And, more important, for the needed changes to be embraced by enough people to matter, you need a narrative that let them believe they are achieving something of value. That cannot be done with propaganda alone. They need examplars, people who have done what it takes to effect a change in their own lives, who have paid the personal costs, and who are not deprived and miserable because of it, but actually happy and even successful.

</comment></comment></comment></comment><comment><USER31>
      The crack in Larsen C grew around 30 kilometres in length
      between 2011 and 2015. And as it grew, also became wider — by
      2015, yawning some 200 meters in length.

It feels pedantic, but honestly something so fundamental as confusing length and width makes this much more difficult to read at first glance than it should be.

<comment><USER32> I don't see any confusion there. The "length" of the crack is its long dimension, from end to end, and the "width" is how far the two sides have spread away from each another.

<comment><USER33> >> I don't see any confusion there.

"And as it grew, also became wider — by 2015, yawning some 200 meters in length."

They use "wider" and "length" to describe the same 200 meter span.

<comment><USER34> no, they use length to describe the measurement of the crack's width. totally valid afaic.

<comment><USER35> You can't just use "length" to describe a width. It's grammatically valid but semantically incorrect. An object can't be "100m long by 100m long".

<comment><USER34> but that's not how it's being used. what length of rope does it take to go around a quarter mile track? there's no ambiguity even though the track has length and width. the dimension in question was specified already, the width of the crack, so referring to the measure of that as its length is fine, no ambiguity.

<comment><USER35> Your sentence is dramatically better than theirs because you're referring to the length dimension of the rope _and_ the track. "What length of rope does it take to go around a quarter-mile wide track?" <\- using the author's mistake in your sentence. There's not enough information in the sentence to answer correctly.

The correct word for a measurement of wideness is width.

Length [NOUN]: 1\. the longest extent of anything as measured from end to end: the length of a river. 2\. the measure of the greatest dimension of a plane or solid figure.

It's pretty unambiguously wrong. You can back into what the author meant without ambiguity, but that doesn't mean the author used the correct word.</comment></comment></comment></comment></comment></comment></comment>


Let's replace license plates with RFID - <AUTHOR> http://www.itworld.com/mobile-wireless/191443/let-s-kill-license-plates

<comment><USER2> So if I witness (or am a victim of) a hit-and-run and I don't have an RFID reader, how am I going to ID the car? There are other reasons to have a visual ID besides vehicle tax/administration.</comment>


Precise control over responsive typography - <AUTHOR> http://madebymike.com.au/writing/precise-control-responsive-typography/ <comment><USER2> Excerpt from a personal page I'm in the process of writing:

        :root {
            /* We wish to make the width range 768..1400 correspond to font-sizes 16..24.
            To convert this to the form font-size: calc(x * 100vw + y),
            we solve the simultaneous equation 1400 * x + y = 24, 768 * x + y = 16
            This comes to x = 1 / 79, y = 496 / 79. So, */
            font-size: calc((100vw + 496px) / 79);
        }

        /* min-font-size: 14px; */
        @media (max-width: 610px) {
            :root {
                font-size: 14px;
            }
        }

        /* max-font-size: 24px; */
        @media (min-width: 1400px) {
            :root {
                font-size: 24px;
            }
        }

        /* One extra rule: if the screen isn't tall enough (arbitrarily selected to be 768px high), cap that font-size at 20px (which would by the earlier formula be reached at width 1084px (20*79-496)).
            Ideally we'd use a font-size rule factoring both vw and vh into it, but that kind of stuff takes too much thought for me at the moment. Yes, dear reader, I am lazy. Can you credit it? */
        @media (max-height: 768px) and (min-width: 1084px) {
            :root {
                font-size: 20px;
            }
        }

I've been contemplating replacing the last one with an aspect-ratio query, a technique that occurred to me later for something in the arrangement where I really needed it.

Still, with all of this sort of fanciness, I find myself _so_ much missing min(), max() and broad custom properties support. ( _Especially_ the latter. People may think their preprocessor variables cover all they need, but they are _utterly_ wrong. They are an _amazing_ tool for more responsive design, making advanced techniques which are agony at present—and thus typically skipped, leaving "responsive" mostly very boring and clumsy—easy and logical.)

I really wish I could do the first three like this:

        :root {
            font-size: max(14px, min(calc((100vw + 496px) / 79), 24px);
        }

<comment> david-given I found myself wanting to do precisely your last example not long ago. I hadn't thought of using min-width and max-width media selectors to fake min and max; that's really neat.

...I wonder if a CSS preprocessor could implement min and max using this technique?

 _Edit:_ d'oh, this is precisely what the article was talking about!

<comment><USER3> There's also this SASS mixin: [http://www.adrenalinmedia.com.au/the- agency/insights/this-ch...](http://www.adrenalinmedia.com.au/the- agency/insights/this-changes-everything-css-fluid-properties.aspx)

The linear equation solver is there, but it assumes px, and there's no license...

</comment></comment></comment><comment><USER4> I like this approach. One small wrinkle (especially when talking about precision) is that many fonts optimise for the pixel grid at small type sizes, so 15px vs 16px vs 17px can look like completely different typefaces (on non- retina screens). Sometimes, this kind of variation in character can impact the look of the page more than imprecision over viewport–type size ratios – the latter is usually just a matter of having variable width margins, which is rarely a problem. I think using absolute px sizes gives designers a feeling of control for this reason. Then again, forcing a preferred glyph set by setting a hard px size is (a) only applicable if you're using fairly small type sizes, and (b) probably gives you a false sense of security anyway – it's all going to change the moment someone zooms their browser, or uses a weird OS, or any number of other things. I think I mostly agree with the author.

</comment><comment><USER5> Viewport units, pixel units - all of these sidestep what the actual unit ought to be relative to: the physical size of the screen (adjusted for how far away it is from your eyes).

If I'm holding a 6 inch tablet, or a 9 inch tablet, both 2 feet away from my face and with potentially different ppi, there's no reason for the 9 inch tablet to have 50% larger font size.

Declaring size relative to pixels solves this only when PPI is constant.

<comment><USER6> Actually, CSS does already work almost the way you described. For devices where the anchor unit is px, a CSS length of 1px is not defined in terms of a single physical pixel on a screen but is instead an angular unit.

More specifically, in CSS 2.1, a "reference pixel" has an angle that corresponds to one physical pixel on a 96dpi display at a nominal arm's length distance of 28in. A measurement of 1px is then recommended to refer to the whole number of device pixels that best approximates the reference pixel.

In principle, that means whether you're holding a phone or tablet with a Retina-class display relatively close, looking at a traditional large format desktop screen with fewer pixels-per-inch, or looking at a projected screen from a typical viewing distance in a lecture theatre, sizing in terms of px should still have approximately the same effect.

However, you do still have a difference of up to 1/3 of the nominal size to contend with: a browser running on a device where a physical pixel is around 150% the size of a nominal reference pixel has to choose whether to use 1 or 2 display pixels for each px, resulting in output that is either 2/3 or 4/3 of the theoretical ideal size.

I've been assuming this is part of the reason we see so many blogs currently displaying irritatingly large body text if they're viewed on a desktop or laptop screen: the designers found that a more traditional font-size was too small for comfortable reading on whatever mobile device they were using at the distance they prefer to hold it, so they increased it.

For more on the CSS px definition, you can check the W3C spec:

[https://www.w3.org/TR/CSS21/syndata.html#length- units](https://www.w3.org/TR/CSS21/syndata.html#length-units)

<comment><USER5> Awesome, thanks! Yes, angular unit is what I was fumbling for.

</comment></comment></comment><comment><USER7> The issue seems to be smooth scaling as the viewport size changes, but does anyone resizes their browser window that way? I either click the maximize button and it goes from, say, 800 to 1600px or flip my phone and it goes from 720 to 1200px instantly. I don't care if it's smoothly interpolating from one size to the other.

<comment><USER8> But the sizes you're switching between are different for every user.

The goal here is to adjust font size appropriately for users with different viewport widths. The interactive smooth-scaling effect that you get when drag- resizing the browser window is nice, but it's a side effect, not the actual goal of the technique.

</comment></comment><comment><AUTHOR> A demo of the proposed technique: [http://codepen.io/MadeByMike/pen/YPJJYv?editors=110](http://codepen.io/MadeByMike/pen/YPJJYv?editors=110)</comment>


Can you edit YC application after deadline? - <AUTHOR>

I had submitted my YC application before the dealine for summer 2011 and now I just edited couple of lines and resubmitted it ...since the instructions say that I need to submit my application at least once before the deadline and I can edit/resubmit as many times as I want ...but now I am freaking out. Will my application be considered late? <comment><USER2> I've now seen this question twice, but both times I have not seen anyone respond authoritatively regarding this question.

Most thread comments discussing this question state that yes it does end up marked as late, which is then followed by someone saying no it doesn't.

Since there is so much confusion about this it would be nice to hear from pg or harj about this. Or to have it added to the YCombinator application FAQ.

</comment><comment><USER3> Depends? Did you edit the interesting hack answer and say you edited your application late to make it more appealing :)

Show confidence in yourself and your idea. I doubt they are going to disqualify a great investment by being too forceful on their rules.

Good luck :)

</comment><comment><USER4> I think there was a message when you clicked through saying that it would be considered late. At least that's what I saw.

<comment><AUTHOR> There is a link to your application and if you click that it lets you edit your already submitted application (in my case I had done that before the deadline).

I think somewhere in HN I read that you can edit it after deadline as well as long as you submit it once before the deadline.</comment></comment>


Apple's Lightning-to-HDMI Adapter Contains an ARM Chip [2013] - <AUTHOR> http://www.theverge.com/2013/3/1/4055758/why-does-apples-lightning-to-hdmi-adapter-have-an-arm-computer-inside

<comment><USER2> March 1, 2013

You ought to add [2013] on the end of the title there.

<comment><AUTHOR> Thanks for the catch. I've updated the title.</comment></comment>


Subleasing some office space in Mesquite, TX - <AUTHOR>

I figured this would be the best place to post this. I have some office space I'm not using and it'd be a great for anyone who wants some space to get started.
There are two spaces, each 104 sq. feet. Rent would be $300 a month.
Rent price includes:
* All utilities (water, AC, electricity, heat)
* T1 Internet Access
* Parking space
* Lockable office space
* Free set up of wireless Internet access on your computers.
* Renters insurance
If you want to rent both, I will lease them both for $500.
It's located in Mesquite, TX. Let me know if you'd like to come by and check it out. <comment><USER2> I passed this on to someone who was looking for a small office in the Dallas area.

However, isn't it a bit steep ? Down here in Austin you can get office space around $1 / sqft or less, depending on what length of lease you are willing to sign, and the location. And those are relatively nice places, with kitchen break rooms and free coffee and conference rooms you can use, etc. Such as: <http://parkwestcc.com/></comment>


Creating an API - <AUTHOR> http://railstips.org/blog/archives/2011/12/01/creating-an-api/

<comment><USER2> Good set of tips. Some tips and tricks that we have learnt when building an API for <http://supportbee.com> (a JS app in the frontend)

1\. Stick to the restful patterns as much as possible. One benefit is that models written in frameworks like Backbone and Spine can start talking to your API right out of the box. Also the other benefits of predictably etc apply.

2\. Resfulie (<http://restfulie.caelum.com.br/>) and Tokamak (<http://rubydoc.info/gems/tokamak/1.2.1/frames>) are super useful.

3\. Devise (<https://github.com/plataformatec/devise>) features an auth_key based authentication making it really easy to give our API access to your users even during the beta phase (before you have fancy Oauth etc rolled out)

The single most useful thing is to use your own API to drive your features so it's dogfed and well tested by the time you roll it out.

<comment><AUTHOR> Yep, <http://gaug.es> was built from the ground up as an API. That definitely made the API better in the long run.

</comment></comment><comment><USER3> I've been using acts_as_api [1], since (aside from the other features) it makes it really easy to version and "subclass" your APIs, and it keeps the presenters for each model separated (really useful for nested responses). I've found that it's really important to version your APIs from the get-go, especially if they are public-facing.

[1] <https://github.com/fabrik42/acts_as_api>

</comment><comment><USER4> The most important tip to creating an API was implied in the first paragraph but is definitely worth stating explicitly: _Use your own API_.</comment>


'Fearless Girl' Is Now Staring Down Wall Street's Iconic Charging Bull - <AUTHOR> https://www.dnainfo.com/new-york/20170307/financial-district/girl-statue-wall-street-charging-bull <comment><USER2> I'm not sure I get the imagery here, the article makes it sound like she's supposed to represent women in leadership roles in Wall Street, so shouldn't she alongside the bull not blocking it's path? That seems to convey a counter productive image of women standing in the way (and... pouting?).

Am I missing something here?

</comment><comment> d--b Wow! That is quite a symbol! I love these kinds of things (and I'm a guy :))!

<comment><USER3> Yeah I agree the symbolism is great</comment></comment>


Amazon Shoppers, Get Ready To Pay Sales Tax - <AUTHOR> http://finance.yahoo.com/news/get-ready-to-pay-sales-tax-on-amazon.html

<comment><AUTHOR> Wow! To me, that's additional 9.75% of the price! (I live in LA County in California)</comment>


Ask HN: How often is hardware at the big tech companies refreshed? - <AUTHOR> Does anyone have data that would suggest how long it takes an org at the scale of an Amazon, Google, or Facebook to entirely replace their HW?
I know that current practice at that scale is to not replace an individual chassis, only whole racks when a certain % of servers have failed, but that can't be the whole story, since presumably servers/racks are replaced if they are old enough even if they happen to still be running OK.
Google for example almost certainly has no servers (or switches, etc.) running that date back to Y2k even though statistically, some 16-year-old HW would still be working if it hadn't been yanked.
So, assuming the HW hasn't actually failed, how old is too old for a "web-scale" company to keep around? And is the answer different for these companies' own services vs. externally facing IaaS/PaaS? <comment><USER2> Once you own data centers, energy consumption becomes a major consideration.

I'm not doing stuff like that but I assume the train of thought concerning the economics of energy consumption is like that: You buy new hardware and from experience you know it's going to last on average a few years. During the lifetime of your new hardware you can save some amount of money on electricity because your new hardware is more efficient than the old one. So it would make sense to hit the buy button for the new hardware when you can save money:

(Savings in electricity over the lifetime) - (Price of new hardware) > 0

I assume after a few years the savings may become significant.

<comment><USER3> I assume the costs of repairs and spare parts would also enter that equation.

<comment><USER4> An aside: it can be a good exercise to use the above reasoning to decide when to buy a new car

<comment><USER5> That reasoning will push buying new cars away to the moment the old ones completely fail, and not a second before.

For cars it is much more important to calculate the risk of it failing in some moment you need it, and the costs of being suddenly carless. Also, for cars that go on a road, the most relevant factor is safety.

</comment></comment></comment></comment><comment><USER6> Lot's of companies lease their hardware, including servers. When that lease expires, that hardware goes on the reseller market dirt cheap. That's how I built my own 17-node server cluster for my (failed) startup, turning what would have been $90K per month AWS expense into a $600 colocation expense. Owning and and maintaining your own servers is not hard at all, folks.

<comment><USER7> I'm interested in buying hardware for my own nefarious purposes. Can you post links?

<comment><USER8> You can get it given to you if you print up some "free e-waste collection service" flyers.

Here's one (Australian?) guy and his small business, with some examples of the stuff he collects: [https://www.youtube.com/watch?v=BbMmuLDMx4Y](https://www.youtube.com/watch?v=BbMmuLDMx4Y)

</comment></comment></comment><comment><USER9> Interesting question. I'm wondering if there's some hand wringing over at Intel about refresh cycles. Moore's law isn't what it used to be. My experience in large, non-tech companies is they've tended to follow a 5 year refresh cycle. But, a 5 year old server is still useful, and not terribly power hungry these days. I could easily see a decision to stretch that out to 6.

<comment><USER10> As a data point, at my current place (a large, university-affiliated R&D lab), the upgrade cycles are different for "servers" that do some externally visible / useful stuff and workstations.

Servers generally get upgraded when the next functionality upgrade topples the current hardware or when the hardware physically dies (often WELL over 5 years).

Workstations / laptops are upgraded whenever a user wants a new one. Many folks (myself included) prefer to keep our current systems for a long time. Components and peripherals get upgraded much more frequently, as people keep buying hard drives, GPUs and other new toys.

<comment><USER9> Yes...a fixed refresh cycle is more common in corporate environments. And it's more of a budgetary thing. IT has some flexibility to keep old servers, but the budget they have to refresh is calculated on some X years cycle. So they are limited in the number they can purchase each year to refresh existing servers. Net new functionality or applications typically fund the first cycle for servers that have a net new use.

</comment></comment></comment><comment><USER11> There are a few factors here.

Depreciation: is typically three years for hardware purchased rather than leased. At the end of 3 years the item has zero value thus can be replaced.

Useful life: is hopefully longer and up to five years. So an item is without value but can still be used. More typical with networking hardware than compute.

The other poster who mentioned power consumption is totally correct. It can make sense to renew hardware even before it has fully depreciated in order to get better datacentre density and lower power draw.

This is what is driving most refreshes in my experience.

</comment><comment><USER12> Working for Big Company...

Three year rolling cycles for servers. That is, you're not replacing hardware all at once but incrementally.

Similar for dev machines. If you imagine a dev has two dev boxes and a laptop, spread that over the three year cycle.

<comment><AUTHOR> Is your Big Company one of the Really Big Companies (eg. AMZN/GOOG/FB/MSFT/KRX/etc.) my question was about?

</comment></comment><comment><USER13> I suspect that as with most businesses, it's not a decision that's driven directly by technology, but rather by the operational economics of new technologies versus the capital costs (where the capital costs include depreciation and resale in addition acquisition and installation costs).

When looking at what large companies do in regard to acquisition, the view through the lens is diffracted by the relationship those companies have with hardware suppliers...e.g. Intel discusses its roadmap with the big consumers of chips and to some degree designs around those companies' anticipated needs -- the chip in my laptop contains features that only benefit someone running a big data center.

Absent explicit data, one way to measure the turn over would be to look at the used server CPU market. The big companies usually don't dispose of Xeons at the landfill and changes to the price and availability of specific chips over time is likely to correlate with upgrade cycles.

<comment><AUTHOR> You're missing something: Compute HW for AMZN/GOOG/MSFT isn't a cost center, it's a profit center. Reportedly AWS profit margins on a CPU-hour were something like 80% at one point.

<comment><USER13> I'd classify profits as part of the operational economics. Someone else might not.

<comment><AUTHOR> Ah, I seem to have glossed over what you actually wrote and apprehended it as "operational expenditures" vs. "capital expenditures" (ie. OpEx vs. CapEx). My apologies.

</comment></comment></comment></comment><comment><USER14> Datacenters are power (heat) limited. If a device does half the work of a new one using the same power, it is probably on the way out. Certainly by the time it hits say 30% it's time to go unless it's a special device.

<comment><AUTHOR> So from a power POV, how many months does it take for a new device to hit 2x-3x FLOPS/Watt-Hour of the old hardware?

</comment></comment><comment><USER15> Refresh cycles depend on 3 values -- end of warranty, end of life, and end of support.

If you're end of support, you have no bug fixes, no technical support, and very limited part availability. You probably won't be running EOS hardware anywhere in your datacenter without a very defined plan to migrate off of it quickly or it's in a lab somewhere no one cares if it dies.

End of Life is when you can't buy the hardware anymore, so you start (or have already started) with the next generation of hardware. Depending on the policy, this could be the oldest hardware you have. You'll get the new stuff in and migrate over, and get rid of these machines most likely once they're out of warranty. Maybe you'll keep this hardware until EOS for low-priority work.

End of Warranty is the last major date, and it depends on date of purchase of a particular piece of hardware, rather than a product line. If you're on a frequent refresh cycle, once the product costs you money to repair then you'll get rid of it. You'll buy a warranty that most likely matches your depreciation cycle - 4 or 5 years. If you choose to keep machines that are out of warranty they start getting downgraded to less critical roles, or are scrapped as soon as they break. Repairs are variable costs in terms of parts and labor, and that doesn't play nicely with budgeting to manage a machine.

In general the harder it is to replace a single piece of equipment or the more expensive it is, the more likely you'll be running until EOL or EOS. Fileservers and networking (especially core networking) will be kept longer than cheap web servers.

EOW, EOS, and EOL all vary depending on vendors and product lines. It's the reason Dell and HP has a separate business line of desktops and laptops, because the EOL and EOS dates are known in advance, and you can standardize your equipment even when purchasing in multiple batches over 2 years. This reduces how much compatibility testing you have to perform, which is really beneficial for huge deployments.

<comment><AUTHOR> Interesting answer, but how do those values affect the sort of massive DCs that AMZN/GOOG run? They don't even replace individual machines, they replace whole racks once a designated % of machines in it are failing.

Presumably the HW _within_ a rack is homogenous, though, so perhaps it is treated as a single large computer from this perspective?

<comment><USER15> Yes, when you're buying enough hardware you treat the rack or row as a purchase unit. A rack is typically hardware plus switching for that rack, so just a few network and power cables are needed to connect a rack to the rest of the infrastructure.

If these companies replace a whole rack when a percentage of machines fail that's a business decision based on cost of hardware versus repair costs. Where I worked we had warranties, so the hardware would get fixed (or die in place for things past warranty) and the entire rack would get rolled out at one time, since we bought in rack increments of capacity and thus they all had the same warranty dates. Letting things die in place obviously depends on how much spare capacity you have in your DC, which could be site-specific within large companies.

<comment><AUTHOR> _> Letting things die in place obviously depends on how much spare capacity you have in your DC,_

by "capacity" do you mean room? I associate capacity in this context more with power & cooling (neither of which are consumed by disabled machines).

Or do you mean that if the DC's capacity is constrained, letting systems die in place and only replacing "mostly dead" racks on a rolling basis keeps capacity utilization _below_ a critical threshold?

<comment><USER15> Generally dead systems don't hurt the datacenter in terms of infrastructure utilization, as they don't use power and they don't use cooling, but they could prevent you from bringing in new compute capacity. So you have to figure out whether you can run both the old and slightly broken systems at the same time as the new and faster systems.

Capacity could mean physical space, since if floor tiles are occupied by a rack you'll have to put it somewhere else. But even if you have physical space to put another rack somewhere, that needs connected to power and cooling.

Depending on your cooling layout (hot boxing, cold boxing, vented floors, etc) you may not have appropriate cooling for a new rack, especially a newer, higher density rack. Or you have sufficient cooling overall, but not for that density in that location because all your high density stuff was planned to go in a designated area.

Same thing with power -- you may not have enough power cables for the power distribution units within a rack (you'd typically have 2 so the redundant power supplies don't share a PDU as a point of failure), the cabling may not reach, the electrical panel could be maxed out on amperage or breaker slots, or you'd throw the load on each of the electrical phases too far out of balance (A previous manager of mine was an electrical engineer, I'm not too sure about the real-world technicalities of this other than he tried to keep everything balanced).

Networking could also be a limiting factor. You could run out of switch ports or SFPs because you only planned for N connections per racks on however many racks, and now you want to keep hardware around longer.

</comment></comment></comment></comment></comment><comment><USER16> Would also be interesting to know what happens with the hardware afterwards (assuming it still works). Is it just trashed? Or something more sustainable? Sold? Given to poor people?

<comment><USER17> It is definitely sold. It is believed the E5 2670 v1 Xeons crashing below $100, heck at one point below $65 on eBay was due to Facebook liquidating some servers.

</comment></comment><comment><USER18> not sure if its a practice, but given the large amount of 1st Generation Xeon E5s that came on the market last year (and they would have been 4-5 years old out of those DCs) and also the large amount of Dell C6100 servers that also arrived on the market (I have one in house that came out of Yahoo) my guestimate would be around the 4-5 year mark... but, again, just a guess...

<comment><USER19> Some of those servers are fantastic value when you get them from a ex-stock supplier. I was seeing 8 thread and 64gb ram boxes for ~£125. If you are building a dummy cloud these are great to play around with.

<comment><USER20> If you can snag westmere socket boards for E5/E7 hold on to them.

The old westmere E5/E7 socket upgrade CPU's from 3rd parties are _dirt_ cheap literally ~$120 for a 10/20 thread xeon. Sure it's still a first gen so no AVX, AVX2, AES, etc. But it is still a lot of compute power.

The issue is a 4-8 socket CPU board to fit them in will run you ~$3000.

<comment><USER21> Those old 20 thread xeons DRINK power. I wouldn't recommend them unless you're getting your energy for free. (Though there is no such thing as a free lunch.)

<comment><USER18> the Westmere E7s seem to be the equivalint of the Xeon X5600 series[1]... so, between 105 and 130w... sticking 4 or 8 of those in a box will blow most power budgets!

[1]:[https://en.wikipedia.org/wiki/Westmere_(microarchitecture)#S...](https://en.wikipedia.org/wiki/Westmere_\(microarchitecture\)#Server_.2F_Desktop_processors)

</comment></comment></comment></comment></comment><comment><USER22> Usually data centers take hardware for "lease" from other companies which is usually 3-5 years.

<comment><USER23> I wonder what's the lifetime of hardware across leases and how it goes to different companies

It seems to be a very different problem to car leasing or plane leasing

<comment><USER24> I'd hate to be the guy who rents a hard drive from the wrong guy. It's like getting the car from the guy who heard sugar is good for gas longevity.

</comment></comment></comment><comment><USER25> 3-5 years looking at the refresh cycle at AWS.

<comment><USER26> Looking at the stuff I keep in racks at the DC... I try to replace the stuff that's basically from the time that servers didn't do low-power idling, So stuff like dell 1950/2950's. The newer systems like 9th gen HP, and 10+th gen Dell systems are usually quite low-power when idle. Since pricing is mostly based on power-usage (bandwidth being cheap or free), it's just a matter of calculating what the trade-off is between running current hardware vs replacing it. But about 5 years would be the max anyway, simply because getting replacement parts starts getting more difficult.

</comment></comment><comment><USER27> Four of the top five comments do not answer the question in any way.

<comment><AUTHOR> Yeah, I noticed that. The headline got rewritten to de-emphasise the focus on the AMZN/GOOG/FB/MSFT's of the world. "The big tech companies" is much vaguer.

</comment></comment><comment><USER28> At my organization the hardware refreshes usually coincide with other major changes like application or software upgrades. Often times a clone is made of the server to test out the upgrade process for an application, when this occurs the clone is usually newer hardware.

That being said, this happens less frequently now as there's been a huge push to move from dedicated hardware to virtual instances in a cluster and now to cloud resources.

</comment><comment><USER29> 4 to 5 years depending on company depreciation cycle and it also serves as general support end for most of the OS/Software unless you want extended support. And tech refresh is generally aligns with finance depreciation cycle for server type asset. Desktops -- 3 year

</comment><comment><USER30> Longest time I worked in the same company was 7 years and I got one new PC in that time.

</comment><comment><USER7> Can someone post links on where you guys bought the hardware second hand?

<comment> ju-st ebay I suppose

</comment></comment><comment><USER31> I'm also curious if anyone has suggestions/knowledge about how large companies go about refreshing not just racks/switches, but employee machines and stuff as well.

</comment><comment><USER32> If the company own the hardware and is a capital expense, then it depends on the accounting policy. Most will depreciate over 3 years I think.

</comment><comment><USER33> Once in 5 years.</comment>


Introducing the World's Most Precise Clock - <AUTHOR> http://spectrum.ieee.org/aerospace/satellites/introducing-the-worlds-most-precise-clock

<comment><USER2> Can any wise person comment on the potential impact of this on distributed systems? If they were cheap enough to pop in a server.

<comment><USER3> You still wouldn't be able to trust them.

Google's Spanner goes really far down this line of reasoning. Read the paper; it's great.

Basically, highly-precise clocks in a machine-local context would substantially reduce drift, but you can still never _really_ synchronize two clocks reliably across a network (potentially asynchronous send and receive times make it basically impossible)

Maybe there's some literature on this I haven't read, but I don't think it would eliminate the kind of work you currently have to do to solve this problem (ie. what Spanner has done), though it would certainly narrow the bars on their TrueTime values quite a bit.

<comment><USER4> I think a very basic reason it shouldn't be possible is that for _really_ accurate sync each device has an unkown bias (innacuracy) besides just high std dev (imprecision) with relation to it's network/processing behavior. If you average out a lot of samples you can get rid of all imprecision (albeit very slowly), but you essentially need a very accurate clock to find the bias, so it makes the whole network approach useless. I would guess you couldn't even solve for bias with a clock once and then keep using the network, because the bias should be time-varying.

</comment></comment></comment><comment><USER5> I'm confused by the use of "accuracy" and "precision" in this article.

From the IEEE article: "[ultranarrow lasers] will make it practical for us to achieve an accuracy below 10^-18–more than 100 times the precision of cesium clocks."

From [http://en.wikipedia.org/wiki/Accuracy_and_precision](http://en.wikipedia.org/wiki/Accuracy_and_precision): "accuracy is the proximity of measurement results to the true value; precision, the repeatability, or reproducibility of the measurement."

Am I mistaken, or is the IEEE article conflating accuracy and precision?

<comment><USER6> In this case, precision is a prerequisite for accuracy, so it's implicit that higher accuracy involves greater precision.

<comment><USER5> Ah I see. Thanks for clearing that up.</comment></comment></comment>


Darpa's $10M voting machine couldn't be hacked at Defcon - <AUTHOR> https://www.cnet.com/news/darpas-10-million-voting-machine-couldnt-be-hacked-at-defcon-for-the-wrong-reasons/ <comment><USER2> >For the majority of Defcon, hackers couldn't crack the $10 million secure voting machine prototypes that DARPA had set up at the Voting Village. But it wasn't because of the machine's security features that the team had been working on for four months. The reason: technical difficulties during the machines' setup.

>Eager hackers couldn't find vulnerabilities in the DARPA-funded project during the security conference in Las Vegas because a bug in the machines didn't allow hackers to access their systems over the first two days.</comment>


It Takes a Village to Separate a Family - <AUTHOR> https://www.deps.co/blog/it-takes-a-village-to-separate-a-family/ <comment><USER2> When Mike Godwin came up with Godwin's law he just "wanted folks who glibly compared someone else to Hitler to think a bit harder about the Holocaust."

<comment><USER3> Systematic separation of children from parents as a matter of policy does ring some alarm bells.

<comment><USER4> The words being used as well. I recall that in the preparation for the Rwandan genocide, the victim group was likened to vermin to dehumanise them (cockroaches, if I recall).

</comment></comment></comment><comment><USER5> US immigration detention centers are now listed as concentration camps. It's also interesting a number of them privately-owned (ie GEO Group, etc.) and also that many businesses, per article, enable their existence for blood money.

It's the opposite of virtue-signaling if you live and work for what's right, not out of what's most expedient or wins popularity points, but out of integrity. Too few people these days have the courage to think deeply and act consistently regarding the big issues impact of their choices of consumption, associations and work income. (Focusing too much on tiny issues would exclude everyone.)</comment>


AI-Powered JavaScript Completions - <AUTHOR> https://www.kite.com/blog/product/kite-launches-ai-powered-javascript-completions <comment><USER2> FYI: Kite as a company had a backlash from the community after they acquired popular Python packages and injected their spyware and ads. So far they've learnt from that lesson, but who knows if they'll stay that way.

<comment><USER3> We hear you. We agree this was a mistake, and over the ~three years since then we've listened to the community, for example by releasing local processing for Kite.

<comment><USER4> Why is "send usage metrics" still on by default in the Kite.app preferences?

I was prepared to give Kite another shot but seeing that checkbox just made me lose confidence. Caddy almost got destroyed by this! Please please please reconsider and make telemetry opt-in, you don't have enough goodwill given Kite's history with exfiltration, and the product has access to too much vital information to be playing around with users trust like this.

</comment></comment></comment><comment><USER3> Adam from Kite here. The team and I are thrilled to launch our new deep learning engine for JavaScript completions.

After years of work building our Python product — now to over 250,000 monthly active users — we decided we were ready to expand a new language. JavaScript was a clear choice given how well it pairs with Python, and it was the our most-requested language.

We took what we learned from building our Python product, adjusted it to JavaScript's nuances, and trained the model on 22 million open-source JavaScript files. We then spent months dogfooding, user testing, and applying advanced model filtering techniques to ensure the UX was ready for everyone to enjoy.

We think the end-result will help you have more fun writing JavaScript, while also helping you ship software faster. We can't wait to get feedback from you to help us improve our JavaScript completions from here! We'll be online to answer your questions here today as well.

Since a lot of folks ask, Kite continues to work 100% locally and Kite for JavaScript is free. We plan to release support for more languages later this year, and are taking requests at kite.com/letmeknow. Thanks!

<comment><USER5> Adam,

Intelligent autocomplete is great. Big fan of it. However, Microsoft has already built this out in VS and VS Code as IntelliCode, and it supports Python, Typescript, JS, and Java.

VS Code is the most used JS editor by far and has first party support for this that comes out of the box. What is the reason for Kite for the VS Code users out there?

<comment><USER6> It says it right in the blog post. VSCode only does fuzzy matching for javascript. This is an "intelligent" autocomplete, so the suggestions should be better.

<comment><USER7> No, IntelliCode is also powered with AI and does not do fuzzy matching. Fuzzy matching happens if you disable intellisense. [https://visualstudio.microsoft.com/services/intellicode/](https://visualstudio.microsoft.com/services/intellicode/)

</comment></comment></comment></comment><comment><USER8> Semi-related thought~ I find myself often dreaming about the AI-assisted development processes of the future. I'll frequently be writing code and start thinking "this task I'm doing is pretty formulaic and constrained-- it should be automatable someday, even if we haven't figured out how yet."

Examples:

1\. I memoized the arguments for a util function. Repeat this on the very similar functions defined alongside it.

2\. I need to put a wrapper component around six similar components. Just do it for me after seeing me do it once.

3\. I imported a new logging mechanism and called a specific method from it in one of my class's methods. Repeat for four similar classes.

Basically I want a "repeat after me" functionality that can intelligently infer which part of thing I just did is generic and can thus be replaced with the next item in the series. In a dream future it would also infer _what the next items in the series are._

I haven't a clue how such a thing could be created though, or I would already be on it myself. It would have to understand the code not just syntactically but conceptually.

God it would make development less tedious though. The difference between today and that future is the same as the difference between today and the days of punchcards.

<comment><USER9> When is it better to solve those problems through the organization of your code rather than an autocomplete feature?

The things you mentioned all seem to yield to the decorator pattern.

Creating the right abstraction (instead of using autocomplete) would benefit future collaborators who may not have access to the same autocomplete functionality.

<comment><USER10> The GP wanted to repeat some code modification 2-6 times. At that scale, adding abstractions often just adds unnecessary indirection and makes the code harder to read.

<comment><USER9> Depends on how often they intend to make changes to that code. But in general I think you are right.

</comment></comment></comment></comment><comment><USER11> I'm glad this works locally. I remember Kite for Python, one of the reasons we couldn't use it was because it sent the code to a remote server. Glad to see this.

</comment><comment><USER12> It's difficult to build a solution that works for all the use cases but I hope the team persists and so far, looking good! I love the examples of comparisons in the links posted, everyone should go check them out to see the difference if they're wondering if they should pick this up over the other implementations!

</comment><comment><USER13> Why is Kite trying to access all of the folders on my machine?

<comment><USER14> When Kite starts, it indexes the .py files on your system so that it can have a ready-made code index to serve responses from. This is why on macOS, Kite will ask for access to certain folders on first startup.

There are some folders that Kite ignores, namely folders that usually contain private data. More info here: [https://help.kite.com/article/97-adding- libraries-from-pytho...](https://help.kite.com/article/97-adding-libraries- from-pythonpath-to-the-kite-index)

</comment></comment><comment><USER15> Reminder that Kite hijacked data in the past [0]. Why should it be trusted now?

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

</comment><comment><USER16> Congrats Kite, Adam & the entire team for launching JS & Pro. Been a fan for a while. Fingers crossed!

</comment><comment><USER17> How is this better than any IDE anyways? The examples look trivial and don't seem even better than ultisnips for vim, forget IntelliJ. Are there better examples anywhere?

<comment><USER18> I can only speak about TabNine which appears to be very similar. It doesn't just complete on APIs, it actually understands the code you're writing. It will suggest variable names based on patterns, it will suggest what you initialize your variables to based on what they're called. It will suggest comments based on the context. Sometimes you can just write the name of a function, and then tab through the suggestions line by line and it will write the whole procedure for you. It's witchcraft.

<comment><USER17> 1\. IntelliJ also suggest variable names based on patterns.

2\. Is there any good example of it suggesting good comments? AFAIK, comments are hard even for humans to write, so if they are able to generate good comments, it should be a major advance in NLP.

3\. I don't believe this. Unless these are very trivial functions which are copy pasted across the internet, this is very hard. Is there any showcase or example where I can see this for myself?

<comment><USER18> I don't know IntelliJ specifically. Maybe they do something similar that works as well.

It obviously doesn't write a complete perfect comment for you, but I mentioned it because it's not really specific to code, it's just a really good and smart autocomplete that works on anything, even prose, and that can take unexpected patterns into account.

I probably wouldn't believe it either, unless I had experienced it. Yes, it's happened for simpler procedures, and you might need to tab through to pick the right completion - but still. It is unbelievably good at figuring out what type of code goes with which identifiers.

</comment></comment></comment></comment><comment><USER19> I haven't tried this, but I'd think that having auto completion in this way, is highly distracting. I usually start out with the basic idea of what I want to write and while writing I go back, alter, jump around, etc. If some AI starts suggestion whole chunks of code for me, I'd just waste time reading what the completions are and not thinking about the actual problem I am writing.

Sure if you are just re-implementing the same thing over and over, then this might come in handy, but so would using OOP.

Again, haven't tried, just some thoughts.

</comment><comment><USER20> So, when this runs completely local, WHY do I have to pay monthly? Why can't it be bought?

And it costs more than my whole IDE (IntelliJ complete license for _everything_) as well...

<comment><USER21> I'm guessing if they gave you an all-in price you wouldn't want to pay what they ask anyway.

<comment><USER20> I am paying ~200 dollars per year for my IDE. What price would be justified for a auto-complete plugin for bespoken IDE?

</comment></comment></comment><comment><USER22> This looks more like a problem that could have easily been solved with traditional algorithms, ranking keywords, etc.

<comment><USER4> I guarantee your opinion of AI-based autocomplete will change if you try it for a week. It's completely different than anything heuristics-based. In fact, it often suggests complete English phrases when I'm writing prose that are contextually relevant and grammatically valid (which makes sense, it uses GPT-2 under the hood I think). It's crazy how good it's gotten over the last few years.

I recommend TabNine but maybe kite is just as good these days, idk.

<comment><USER9> Your comment convinced me. I just downloaded the TabNine extension for VS Code and started using it for the work I'm doing (Python).

I tried it for about 10 minutes, but had to disable the extension. Two reasons:

1\. My editor no longer brought up the useful function signature hints for library methods I wanted to call, which is really annoying.

2\. There was a noticeable increase in lag from when I hit a key on my keyboard to when the corresponding character appears on screen. It was hard to get used to.

Have you noticed these issues? Would appreciate any tips you have for how to get over this - maybe just stick with it a while?

Thanks.

<comment><USER4> 1\. the priority order of popup hints is customizable in VSCode I believe. Unfortunately, I use sublime so I'm not sure of the exact fix in VS, maybe someone else can chime in with their experience here.

2\. I haven't encountered this in SublimeText other than when I first open a large new project for about ~30sec, maybe it's trying to index a large project folder? I know you can set up restrictions on the folders it tries to index to make sure it's not going wild on your whole home folder by accident.

Check out [https://www.tabnine.com/faq/#magic_strings](https://www.tabnine.com/faq/#magic_strings) and maybe try playing around with some of those config options?

<comment><USER9> Thanks. Will give it another go.

</comment></comment></comment></comment></comment><comment><USER23> Think Kite is down, trying to download but getting service unavailable when I open up this page: [https://alpha.kite.com/release/dls/mac/current](https://alpha.kite.com/release/dls/mac/current)

<comment><USER3> Thanks, we believe we fixed this. Could you try again?

Thanks for your patience!

<comment><USER23> Fixed now, much thanks

</comment></comment></comment><comment><USER24> I can't put my finger on it, but this seems less like a helpful incremental improvement and more like sowing the seeds of our own destruction. Like it's obviously bad to only write code that you've seen other people write in circumstances you can recognize as similar, and it's bad to only write code nobody has ever written in history, and this just barely crosses the line.

</comment><comment><USER25> very stoked on this! Thanks! Been using the python version for months and absolutely love it!

</comment><comment><USER26> Wow! Excited to hear more about Kite in the news

</comment><comment><USER27> Code extraction alert! Would not trust this company. Google them

</comment><comment><USER28> Incredible stuff!

</comment><comment><USER18> Any reason to use this over TabNine[1]? I've been using that for months, and only have good things to say about it. It's like it's reading your mind. Strong recommendation.

1: [https://www.tabnine.com](https://www.tabnine.com)

<comment><USER7> Off-topic maybe, but do you feel the any kind of lag with TabNine. I've dropped using it after a month as its slowed down my editor.

<comment><USER29> Dror from TabNine here. We've introduced some big improvements in TabNine's resource consumption in the last few weeks, and there's more to come. In addition, TabNine's Professional version (free trial available) lets you use our GPU cloud servers which means dramatically reduced load on your machine.

<comment><USER30> Are there any plans to allow using local GPU?

</comment></comment></comment></comment><comment><USER4> Having tried Kite a few years ago, and then TabNine, I ended up sticking with TabNine.

The thing that convinced me in the end was that Kite had a super heavy editor integration UX that needing a constantly-running Electron "copilot" app, even uploading some of my code without clearly asking for consent first. This has maybe changed now, but at the time that was my impression.

Meanwhile, TabNine has almost _no_ UI, it's just the tab button and nothing else, and somehow the autocomplete "just worked" amazingly well with any language I wrote, including English prose. The ratio of "fuss" to "gain" was just so different between the two. One I barely remembered I had even installed anything, my editor just suddenly became a pair programmer overnight, and the other felt like I was running a whole electron app just to get occasional library headers autocompleted and docstrings on hover (in only a few supported languages).

I wish the Kite team all the best though, and I hope to see their solution grow and improve. There is definitely room for more players in this space, and I know they've learned many lessons from their past issues with code uploading UX, so I hope people give them a break over that past PR gaffe.

<comment><USER3> Thanks for the thoughtful message!

We hope you'll give Kite another shot. We're always improving it and have covered a lot of ground in the last few years.

In particular, a common complaint about TabNine on Twitter is that it's heavyweight. Based on our comparisons of today's Kite versus today's TabNine, we believe Kite uses less CPU/battery, and far less memory. (My teammate dhung posted a longer comment about TabNine.)

<comment><USER4> To clarify, my complaints about Kite being heavyweight are 90% about the UX flow being heavy, not the CPU/RAM usage.

Kite seems to require a background daemon, Electron copilot app, and editor plugin, with a multi-step setup to customize what things are shown on hover vs ctrl+space vs tab. By comparison, Tab Nine was a single command to install in SublimeText, and I have never had to interact with it since other than pressing "tab". It seems to be completely language-agnostic with no additional setup as well.

FWIW, here are a few pain points from trying Kite today:

\- Kite is a 1GB download vs TabNine's 64mb

\- Kite Engine is using 300MB of RAM on my machine right now, and I don't have a single editor open, and there's no way to stop the daemon in the UI

\- "sending usage metrics" is on by default in the preferences :/ this is really scary to someone who remembers Kite's issues with code exfiltration and telemetry in the past, haven't ya'll learned that lesson? I had hoped all of that stuff was disabled these days but I guess not.

\- there is no uninstall option provided, and you cannot delete the .app on macOS because "the application is in use", yet there is no UI to stop or diasble the daemon anywhere, do I really have to manually `pkill kite; rm -RF /Applications/Kite.app` to remove it?

\- Your "Start free trial" link on the homepage appears to redirect to forms filled with real user email addresses? Who do those addresses belong to, are you leaking your users emails? [screenshot link redacted]

<comment><USER4> Response from Kite about the emails leaked:

> Thank you very much for calling this out. A test version of that webpage was > temporarily deployed by mistake. The issue was fixed immediately and we're > in the process of notifying the specific users who were affected.

Welp, those were real user emails being leaked.

</comment></comment></comment></comment><comment><USER31> I've been using [https://www.tabnine.com/](https://www.tabnine.com/) for similar AI/deep learning autocompletion, highly recommended.

<comment><USER32> I bought TabNine back in 2018 used for a while and stopped, now I see it's a subscription service. Anyone still using the old version? Is it still working?

<comment><USER29> (Dror from TabNine here) If you're lucky enough to have bought the perpetual license for TabNine back in 2018, you don't have to purchase a subscription as all perpetual licenses are honored! Just reach for email@example.com if you need help.

<comment><USER32> Wow, fantastic! Thank you very much!

</comment></comment></comment></comment><comment><USER33> Really love TabNine [1]. Same thing, AI as an editor addon for super smart completions. Would be interested in knowing how Kite compare!

[1] [https://www.tabnine.com/](https://www.tabnine.com/)

</comment><comment><USER34> So this is just code completion? What exactly makes it qualify as "artificial intelligence"? Did they throw some PyTorch or TensorFlow into the mix?

<comment><USER35> > We've trained a new deep learning model on 22 million open-source JavaScript > files to ensure Kite works with your favorite libraries and frameworks like > React, Vue, Angular, and Node.js.</comment></comment>


Facebook group for Border Patrol agents with posts on migrants and lawmakers - <AUTHOR> https://thehill.com/latino/451166-propublica-uncovers-facebook-group-for-border-patrol-agents-filled-with-derogatory <comment><AUTHOR> Also quite recently another Facebook event with Border Patrol:

[https://thehill.com/homenews/446651-analysis-of-thousands- of...](https://thehill.com/homenews/446651-analysis-of-thousands-of-police- officers-facebook-accounts-finds-violent-racist)</comment>


T Mobile response to US wide outage - <AUTHOR> https://www.t-mobile.com/news/update-for-customers-on-network-issues <comment><AUTHOR> What is concerning is the fact that a failure in one part of the network was able to spread so wide. yhere are certain words in there that make it sound like they don't capacity plan or anticipate these sorts of failures? Certainly the lack of isolation is not good, but that's pretty common in the mobile carrier space.

<comment><USER2> It sounded more to me like they had planned, but a failure mode slipped through.

</comment></comment><comment><USER3> "This redundancy failed us and resulted in an overload situation that was then compounded by other factors" seems like those other factors may have been more important too.</comment>