The Law of Shitty Clickthroughs - <AUTHOR> http://andrewchenblog.com/2012/04/05/the-law-of-shitty-clickthroughs <comment><USER2> This is true of the entire practice of marketing & advertising. Every "innovation" is just a new way to break through the noise to capture consumer interest. (remember the first time you saw a URL on a truck? so cool! now even my credit cards have URLs on the back and I don't give a shit)

There are two ways succeed: 1) create new forms of media (author talks about this a little at the end) and 2) make better ads on existing media. Pretty much every advertising company I know about tries #2. Improved targeting by xyz fancy algorithm or better creative, which works until it succeeds too much.

</comment><comment><USER3> "Customers respond to novelty, which inevitably fades"

An alternate wording might be "you can fool people into thinking an ad is something else for a little while, but they soon wise up". Left unstated: exactly why a potential customer who's been tricked into clicking on an ad is going to be in the mood to buy anything from you or associate with you in any way.

You could make an analogous observation about the "channel decay" for "email opening rates".

If your marketing mechanisms prompt potential customers to actually INSTALL SPECIAL SOFTWARE in order to avoid your message, you're probably doing something wrong, yo.

<comment><USER4> Correct. Advertisers should accept that their relationship to users is an adversarial one. Users don't want advertisements, don't like them, and do their best to avoid them.

<comment> mkr-hn That seems defeatist. I've whitelisted plenty of sites because the owners are selective in who they let run ads. Penny Arcade's creators posted a story (which I can't find a link to) about how their business guy (Robert Khoo) spent days working on an ad deal, then handed it over. They rejected it because they couldn't endorse the game being advertised.

This is the kind of thing advertisers should be doing. Actually be involved in the communities you're advertising to and you're going to know what they want to buy. This is why ads on PA are non-intrusive (rarely more than one loop on the animated ones), and are always relevant. There's quality control on both ends of the deal.

Nothing can help someone advertising garbage. But that's a whole other discussion.

</comment></comment></comment><comment><USER5> I would like to add that one of the points in the discussion was a simple application of a much broader point. Chen says, "It's bad enough that your own marketing efforts drive down channel performance, but usually once your marketing efforts are working, your competitors quickly follow."

The broader point is to think about the world in terms of feedback loops -- what we might call _feedback theories_. Our modern understanding of nuclear chain reactions works this way; once you get above a certain density, a neutron will be likely enough to hit a fissionable isotope, that the average number of neutrons produced per neutron is more than 1.0 -- then the neutron makes itself more likely, the chain reaction grows exponentially with positive feedback, and boom. Otherwise it will just peter out to 0 from negative feedback. Evolution by natural selection is also a feedback theory, if you focus on the genes themselves.

Coming back to the economic examples, it is now considered a relatively good economic model to assume that the stock market already knows everything that there is to potentially know about a company. If you just imagine that there was some person who magically started moving money to the day's top performers, you can reasonably envision that others might try to jump on this magical predictor, then attempted to bail out just before they did -- but so many would potentially sign up for this that it would damp that predictor's own profits to have a massive sell-off just before they were supposed to sell themselves, negative feedback. It's thought that on a smaller scale this would tend to happen with insider knowledge. Or, for another econ 301 example, there is a powerful argument that competitive markets are efficient, because they must be among the least profitable markets around. Why must they be the least profitable? Because if competing is easy, then anyone in a less profitable market cuts their losses and jumps into the competitive market instead, which concentrates profits in the market they're leaving and dilutes profits in the market they're joining. And if there's no profit, there's no room for inefficiency. (There's also a sort of odd pseudo-Marxist corollary: that agents within a market always want the market to be less competitive, so that their profits can be higher.)

Anyway, the law of shitty clickthroughs amounts, I think, to a particular feedback theory of marketing. If you market well, that generates negative feedback, both in the form of people following your example, and in the form of people getting desensitized to your ads.

</comment><comment><USER6> "Similarly, this law provides a litmus test as to the difference between advertising and information. When you are marketing with useful information, then CTRs stay high. Advertising that's just novelty and noise wrapped in a new marketing channel has a limited shelf life."

I've just realised how true that is by making a brief inventory of my own repeat purchases. I have rewarded sources that give information and support, and ignored the spammy banners.

<comment><USER7> I think this is an important point in analyzing advertising.

The core of advertising is generally not to match a user to a product that fits them well and will be genuinely a good use of time/money. The end goal of most advertisements is to sell a product, or to change the way you view a company, regardless of how closely the company and the products matches your needs and ideals.

Many of the most successful forms of advertising use a certain level of behavior modification via methods like classical conditioning. Instead of showing a fancy car, they show a fancy car and a very attractive woman, and you are more likely to associate 'want' with the car as a result of the woman. Food companies will often try to advertise to you at times and locations where you are most likely to be hungry, so that when you are hungry again, you are more likely to think about their food.

I would view many of these types of advertising as parasitic, because they allow potentially inferior companies and products to out-compete potentially superior companies and products.

I do not think that most people consider this consciously, but perhaps it plays into their subconscious processing of advertisements. They click on a cool looking advertisement, and find a less cool product (or maybe a product that they recognize as overpriced), and then they associate that form of advertising (banner, etc.) with a gimmick, and therefore are less likely to follow through on that advertisement format in the future.

To summarize, I think that the 'shitty clickthrough rate' effect would be much less significant if advertisements were less gimmicky and more authentic, and geared towards matching the customer to the product that matches them, instead of matching the product to a potential customer.

</comment></comment><comment><USER8> After a lot of experimenting on a wiki hosting service I run (editthis.info), I found that putting ads way at the bottom of content, and just putting one ad tended to work better than any other location. You have read all that you will read, and you don't mind being distracted to go off and see what an ad will lead you to (my guess).

<comment><USER9> By "work better," do you mean "acquired clicks" or " acquired sales?"

</comment></comment><comment><USER10> I dont think I have EVER clicked on a web ad.

Who clicks on them? I wonder how many are accidental.

<comment><USER11> If I'm looking to buy something and don't know where to buy it, the first thing I do is a Google search followed by opening all the ads above and beside the results in tabs.

I've also been captured by retargeting campaigns by web services. Quite a few YC-funded companies run them. You only see their ads after you've been to their site... but they follow you all around the web, everywhere AdSense/DoubleClick reaches, which is 90% of all display advertising.

</comment></comment><comment><USER12> In economics this is called "diminishing marginal returns."</comment>


What do you buy a programmer for Xmas? - <AUTHOR> http://successfulsoftware.net/2008/11/25/what-do-you-buy-a-programmer-for-christmas/

<comment><USER2> Andy, the gentleman organizing this charity drive, is a friend of mine. I threw in a bit of an inducement for people who want to help:

<http://kalzumeus.com/2008/11/25/help-debug-the-world/>

</comment><comment><USER3> Trick question... (S)he celebrates festivus.

Honestly, anything from thinkgeek.com should be fun, but I love what is going on with the donations from those T-shirts.

</comment><comment><USER4> What a nice thing to do for the holidays. I've been wanting a shirt that says something like:

        self = [[NSCoder alloc] init];

I've gotten a binary watch as a gift and loved it.

</comment><comment><USER5> Celebrate Newtonmas instead...

[http://cabalamat.wordpress.com/2008/11/26/on- december-25-a-s...](http://cabalamat.wordpress.com/2008/11/26/on- december-25-a-saviour-was-born/)

</comment><comment><USER6> Make them craft an Amazon.com wishlist. I do it for my Mom who has no idea what to buy an uber geek like me.</comment>


Ruby podcasts - <AUTHOR> http://www.rubyology.com/

<comment><USER2> I don't understand how to listen to the, it says mp3 but that isn't clickable.

Where are the actual podcasts? I have to download something?

<comment><USER3> You can listen to them on the page by clicking the play arrow in the embedded widget. Rubyology's also on Odeo, though, which gives you a few more options. Go to an episode page there (like <http://odeo.com/episodes/23382315-Rubyology-71-Avi-Bryant>) and click on the Download tab under the player to grab the file itself.</comment></comment>


Show Me the Headers - <AUTHOR> http://showmetheheaders.com/

<comment><USER2> Of course they should probably escape any headers they get from the sites they pull the data from to avoid Cross-Site Scripting :) <http://showmetheheaders.com/?q=www.mccune.org.uk>

<comment><AUTHOR> good catch. thanks! should have proper filtering now. that's what i get for writing code at 2am and not properly reviewing.

</comment></comment><comment><USER3> Rick Roll:

<http://showmetheheaders.com/?q=vg.no>

        * X-VG-WebServer: leon
        * X-VG-WebCache: fritz
        * X-Rick-Would-Never: Never Gonna Give You Up
        * X-VG-Korken: http://www.youtube.com/watch?v=Fcj8CnD5188
        * X-Cache: HIT
        * X-Cache-Hits: 214
        * X-Age: 187

</comment><comment><USER4> Looks like they do it with javascript + YUI which is pretty cool: <http://showmetheheaders.com/static/showme.js>

You can do it with curl too for all those who don't know

        curl -I example.com

works with multiple domains as well

</comment><comment><USER5> you should send a user agent that makes it look like a real browser. for eg. Microsoft.com responses are different based on user agent, which is why they do the redirect. Here is Microsoft.com from Chrome (it is diff again for IE 6/7/8 etc.), you get a lot more information:

      Cache-Control:public
     Content-Encoding:gzip
     Content-Length:23262
     Content-Type:text/html; charset=utf-8
     Date:Fri, 23 Jul 2010 07:27:32 GMT
     ETag:634154400660000000
     Expires:Fri, 23 Jul 2010 07:37:32 GMT
     Last-Modified:Fri, 23 Jul 2010 07:01:06 GMT
     P3P:CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD  TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI"
     Server:Microsoft-IIS/7.5
     VTag:438638311400000000
     Vary:Accept-Encoding
     X-AspNet-Version:4.0.30319
     X-Powered-By:ASP.NET

</comment><comment><USER6> Is anyone else surprised that microsoft.com still has "emulate IE7" turned on?

</comment><comment><USER7> slashdot.org gives you fortune output in an "X-Fry" header, much like the site itself.

EDIT: on second look, they're Futurama quotes. That explains why "X-Fry" changed to "X-Bender" when I went back!

</comment><comment><USER8> TechCrunch is fun...

      # X-hacker If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.

<comment><USER9> I'm guess thats because Techcrunch is hosted using wordpress.com's VIP service and that's wordpress.org/com's header

</comment></comment><comment><USER10> This is fun.</comment>


With Three Key Exits, Facebook's Top Talent Departures Continue - <AUTHOR> http://allthingsd.com/20120801/facebook-platform-exec-ethan-beard-departs/

<comment><AUTHOR> The drumbeat (of departing feet) gets louder. [From 47 days ago: "Facebook CTO Bret Taylor Departs" (215 points): <http://news.ycombinator.com/item?id=4118498> ]</comment>


Learning programming at scale - <AUTHOR> http://radar.oreilly.com/2015/08/learning-programming-at-scale.html <comment><USER2> I was anticipating this to be "Learning (Programming at Scale)" but it's instead "(Learning Programming) at Scale". A slightly different challenge. :)

</comment><comment><AUTHOR> I just had a revelation while reading the OP (who describes a much more elaborate, fully-featured system)...yesterday I was teaching students (about 20) how to do calculations with Pivot Tables using Google Sheets and was struggling with the usual "well-can-you-describe-exactly-what-syntax-error- you-made" problems...and now realize that I could've just had students give me read/edit access to their sheets and I could've just cycled to their tab and corrected their problem for everyone to see on the projector.

I would love to have a code editing system that is as easy as that...I only have to deal with 20-or-so students at a time, so I don't need anything fancier than a way to manage 20-tabs at the same time. Having a way to jump to and collaborate on a student's session in the same way I can Cmt-T through a Sublime Text/Atom project would be all I needed.

<comment><USER3> It's maybe not perfect, but can you have them working in a shared dropbox directory in class? (Or something equivalent.) Then just open or refresh the file...

IPython notebooks running on a central server is potentially another option for some languages.

edit: if you do find a working solution, please write it up and post it. I'd love to hear what works.

<comment><AUTHOR> Ah...that's pretty smart, too. It wouldn't be as slick of a collaborative environment, but at least I can grep the entire class folder in one go. I will seriously consider this!

</comment></comment></comment><comment><USER4> These things look neat, but wouldn't this be _teaching_ programming at scale? The phrase "learning programming at scale" leads to the idea of someone trying to learn how to program who is also able to repeatedly enlarge the amount of stuff that s/he is able to learn at once. That's...not really what's going on here.

<comment><USER5> Also, doesn't this only work with intro materials that only have a few lines? How's this way of teaching programming going to work if the program is hundreds of lines long, across multiple files, or have more than one correct solution? The debugging time alone would go up very quickly

<comment><USER6> Right and that's why there's things like AirPair where the cost of tutoring goes up and is paid per minute due to the complexity. This scaling has a limit but it's the same as any other field; how many artists go on to be great artists after all?

</comment></comment></comment><comment><USER7> This is very timely. For the past few years I have been teaching a programming course to small groups of beginning students, generally no more than 15. The goal is teach them the basics over the course of a semester, and we usually get there. The only downside is that it takes me about 30 minutes to review each assignment (there are two a week) and write feedback to the student. With 15 hours of grading a week, it seems hard to imagine teaching much bigger sections.

I went to a small college, so my programming courses were typically about the same size, 10-20 students. How do larger sections work in terms of getting feedback from professors? It seems critical, especially early on, to be able to understand the way students are trying to solve problems and then give them guidance how to get there. That seems to require more than "yes/no your code passed the unit test."

<comment><USER8> I teach Java and Python intro courses at two different colleges (both < 30 per class), and the way I've developed my courses are very unit test driven. The reason is when I hand graded, it would take easily hours to finish grading everything. Likewise, students would submit code they copy/pasted from the internet and wouldn't compile. After 5 minutes of debugging their code, it begins eating into my overall grading time. Likewise, what percentage should I give them on code that doesn't compile? Now, I say a flat "if it doesn't compile, the best you get is 20% for proper formatting".

In the first few weeks, I use JUnit and System Rules (I am currently build Python unit tests) to let them only work via the main method. Once we introduce methods, I show them how I call them via my tests.

I have also started implementing typing exercises into my weekly work, so students can get a feel before getting thrown to the wolves on the week's assignments. If I head to PyCon next year, I hope to present on whether it was successful or not.

I am looking to automate grading ala Open edX style submissions, as the biggest problem I have is not being able to give students a grade/notes until around Friday when I grade.

One trick I do is lecture all of Monday (2 hour class) and then let them work on their assignment for the week on Wednesday (3 hours). Most students don't realize how much time outside of class needs to be spent in the initial semesters of programming. I use that lab time to let them work and act as a helpful tool if they have questions. For example, this week, we'd gone over building Objects, but the idea of constructors are still shaky to some people. Today, when they were working on their labs, I spent some time with the 1-2 students that needed a little extra help understanding the work to get everything.

<comment><USER7> Thanks to everyone for their excellent suggestions.

One of my reservations about going to an automated testing and grading approach is that the course evaluations consistently say that the personalized feedback is an important reason that they took the course. But the fact is that line by line analysis of every submission does not scale, and teaching X times as many sections means that compromises will have to be made.

I am not worried about the top and middle thirds of the students, they largely sail through on their own with pretty minimal guidance from me (it is an intro course and many of them have strong backgrounds). The bottom third of the class is new to programming though, so hopefully they will take more advantage of lab and office hour time to solicit help.

<comment><USER8> The bottom third is where I hope to see improvement with the introduction of typing exercises, lecture exercises (multiple choice/true-false/fill in the blank style questions) and also I include YouTube videos of that week's material. My logic is that like sports, you need to stretch and warmup before doing a physical activity, so the same should be applied to a new concept. If the student is still having trouble implementing the concepts on their own, by having a prebuilt, functional version can help them see how it works.

Here's the current exercises for my Java 1 class: [http://imgur.com/a/boc6h](http://imgur.com/a/boc6h)

So far, the students are responding favorably to the exercises and the only fall out I've had are students that fail to show up or do any work. Grading wise, the typing exercises are 10%, lecture exercises are 10% and the actual programming assignments are 30%. Since the problems are a smaller chunk of their overall grade, it alleviates the pressures of the 'all or nothing' structure of the unit tests.

In my evaluations last semester, many loved the introduction of the YouTube videos and I plan to ask them about the typing exercises this December.

I definitely agree on the personalized feedback portion though, that's why I make the second class meeting only programming, no lecture. This way, they can get their hands dirty with an experienced person to help them.

<comment><USER7> Brilliant. About 75% of our class time is spent doing exercises in class with me roaming about, or at least it would be if I could remember to stop talking at certain points.

<comment><USER8> Smart! Before I let them loose during the 3 hour lab, I spend about 15 minutes talking about the overall plan of a specific problem. For example, during looping, they had to flip a coin 1,000,000 times and record the results. I explained how Math.random() worked and how if they did "Math.random() > 0.5" they could determine whether the coin was heads or tails.

Looking at my current scores: 9 have A's, 2 B's and sadly 1 F

<comment><USER7> I wish that I could give out those grades (except for the F, obviously). One of the drawbacks of our system is that we have to grade on a curve, particularly the number of top grades that we give. The deans can give some variation in that quota, but only in exceptional circumstances. It is hard when I am teaching an elective and these are students that are specifically choosing something very challenging when they could just as easily spend their last semester coasting through.

I have never had to fail a student, but I have had a few violations of academic integrity that had to be dealt with. One of the few upsides of intensive grading is that I tend to remember specific errors, and a flag always gets raised when I see the same error twice, regardless of how many variable names were changed, etc.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> As an aside, the author, Philip Guo has some good posts on his blog: [http://www.pgbovine.net/writings.htm](http://www.pgbovine.net/writings.htm)

</comment><comment><USER10> excellent work! making students understand references/pointers has been my biggest challenge. dynamic visualizations definitely help.</comment>


Mike Butcher: There is no better time to start up a startup - <AUTHOR> http://www.guardian.co.uk/tech-media-invest-100/no-better-time-startup

<comment><USER2> We're sorry, the article you are looking for is not yet available on mobile, please go back to the main site or choose one of the following links

I hate that shit. More so the redirect to the mobile site and not the actual article. Sincerely pisses me off

<comment><AUTHOR> wow, thats retarded.

</comment></comment><comment><USER3> \--->" In a recession, human resources are cheaper as more skilled people come on to the market. Costs, such as office space and PCs, are lower."

Right, but this also means that it will be harder to get funding and customers are less willing to pay for your service.

\--->"Business plans start to focus on clear revenue models, not crazy ideas."

Wake up! You business people. You can't PLAN a great start up from the beginning. Google didn't have a "clear revenue model" for 4 years. "Crazy ideas" are exactly what we need. If a start up idea doesn't sound crazy to you,i (and others) would have done it already.

<comment><USER4> That's one (very risky) way to start a start-up. I prefer the safer, "let's fund ourselves from revenues" approach. And, from what I've observed, it's the only one that works reliably.

</comment></comment><comment><USER5> Where are all the articles about when it's a bad time to start a startup?

<comment><AUTHOR> he never said that. He's simply stating that this year is a better time to startup than, say, five years ago.

</comment></comment><comment><AUTHOR> > the real entrepreneurs who have been waiting in the wings for the perfect > conditions for a startup: a downturn

<comment><USER6> I know, seriously! I don't know about you, but I've been sitting on all of my ideas, patiently avoiding making any forward progress all in hopes that someday soon the economy would tank so I'd be able to bust out of the starting gates with my amazing ideas right when the time is right and my would-be competitors have trouble getting second round funding.

All those people who've been executing their ideas without the patience and fortitude to wait for this downturn are such suckers!

<comment><AUTHOR> I actually agree with the above quote to a certain extent, if you remove the "real" its 100% correct.

I know a lot of people who have recently quit their jobs and are doing a startup - simply because of the down turn means companies are:

cutting back on R&D, giving you a tech advantage

laying off staff, meaning you can recruit easier

there is never a _bad_ time to start up, but I do think some times are stronger than others.

<comment><USER6> _there is never a bad time to start up, but I do think some times are stronger than others_

Agreed. I actually upmodded your parent comment as well as the story, but I couldn't help but poke fun at the idea of people timing the market, _waiting_ for an economic downturn before starting their startup. The idea that you can time the market and consciously start a business at The Perfect Time is preposterous. :)

</comment></comment></comment></comment><comment><USER7> Every two months or so I read such articles. Wonder when is it actually the best time to start. Now?

</comment><comment><USER8> The economy is a rounding error in predicting the success of a startup. Paraphrased from pg.

</comment><comment><USER9> Actually, a better time would have been a couple of months ago. You're late to the party.

</comment><comment><AUTHOR> why did someone rename this post from "There is no better time to start up a startup" -- Mike Butcher to the current title? weird.</comment>


Ask HN: Do online adverts have any effect on you? - <AUTHOR>

Most things that are shared on here are paid for by advertisements.  But do you think that these adverts actually deliver a return?<p>I've got a theory that heavy internet users are ad-blind.  My mum can't tell the difference between content, menus and Adsense units.  Hence she clicks on them all the time. <comment><USER2> I am totally ad blind. I don't see them, or if I see them I don't parse them, or if I parse them I don't remember them 3 seconds later.

Of course that does not mean that ads don't deliver a return.

</comment><comment><USER3> Ads work for a variety of reasons and those who claim they don't work on them are probably wrong (imo).

Aside from direct action (click and buy my product) there's also a branding goal. Assuming you don't block ads, you do see these ads all the time. There's a certain familiarity with products or brand names that you will develop and that will likely influence you later, if you are ever in the market for that product.

</comment><comment><USER4> Ad blind. Totally. I'm almost always on a page for a reason and just want to get what I came for and then be gone; either back or digging for more substance. I suppose my mind is registering something of them but I don't seem to be conscious of this.

</comment><comment><USER5> It depends on the site. I click on the penny-arcade ads all the time.

I'll click on google ads sometimes when I'm looking to buy something but that doesn't usually result in a sale.

</comment><comment><USER6> I find I do not look twice at ads on most web pages. However, I have found that I do click on Facebook ads a lot more. Personalization is key.

</comment><comment><USER7> I use Adblock, so the only time I think about ads are when a website's layout is wonky and I realise that's where the ad should be.</comment>


Mt. Gox releases updated statement - <AUTHOR> https://www.mtgox.com/?update

<comment><USER2> In case it goes down or changes:

February 26th 2014

Dear MtGox Customers,

As there is a lot of speculation regarding MtGox and its future, I would like to use this opportunity to reassure everyone that I am still in Japan, and working very hard with the support of different parties to find a solution to our recent issues.

Furthermore I would like to kindly ask that people refrain from asking questions to our staff: they have been instructed not to give any response or information. Please visit this page for further announcements and updates.

Sincerely, Mark Karpeles

Dear MtGox Customers,

In light of recent news reports and the potential repercussions on MtGox's operations and the market, a decision was taken to close all transactions for the time being in order to protect the site and our users. We will be closely monitoring the situation and will react accordingly.

Best regards, MtGox Team

</comment><comment><USER3> > working very hard with the support of different parties to find a solution > ...

The "solution" had better be an orderly accounting and distribution of remaining assets, managed by a trusted third party.

Please, please don't try to resurrect Gox or any rebranded facsimile thereof.

Mt. Gox, be gone!

</comment><comment><USER4> Nothing to get excited about, this announcement has been already anticipated +12hrs ago.

</comment><comment><USER5> I think the dead horse is flogged enough already.</comment>


Windows 10 Build 18262 Released to Insiders with Task Manager Improvements - <AUTHOR> https://www.bleepingcomputer.com/news/microsoft/windows-10-build-18262-released-to-insiders-with-task-manager-improvements/ <comment><USER2> Copy and paste blog spam, word for word from [https://blogs.windows.com/windowsexperience/2018/10/17/annou...](https://blogs.windows.com/windowsexperience/2018/10/17/announcing- windows-10-insider-preview-build-18262/)</comment>


Airbnb is providing free housing to refugees and anyone not allowed in the US - <AUTHOR> https://twitter.com/bchesky/status/825517729251684352 <comment><USER2> AirBNB might want to adjust their offer since the majority of the world population are not allowed in the US. Visas are limited by country and can be an arduous process.

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

Only visitors from the few countries in blue or green are permitted entry automatically:

[https://en.m.wikipedia.org/wiki/File:Visa_policy_of_the_USA....](https://en.m.wikipedia.org/wiki/File:Visa_policy_of_the_USA.png)

I mention this without any advocacy for any position, but because some commenters seem to expect that borders are normally open. Every country has similar restrictions. Many countries don't admit US citizens without a visa.

Edit: Rayiner, I'm in favor of more and easier travel generally, I'm referring to the wording of Brian's tweet.

<comment><USER3> I thought this too, but looking a bit further there's already refugees living in the US in motels and so on, burning through their 'welcome cash'. Not sure about numbers, I just looked at one example of a family from Afghanistan who arrived just before the ban. So the housing offered by Airbnb hosts in the US would be, I presume, for people like this who are living in motels currently.

I wonder what these refugees who made it to the US typically do for housing once their motel money runs out? Are they on a waiting list for government housing or something? I guess they would receive welfare payments to cover rent, or just need to find work.

</comment></comment><comment><USER4> All of the virtue signaling and moral feather preening surrounding this issue is something to behold.

It seems we're entering a new era where businesses engage in political activism as well as simple commerce.

If that's the case, it's only fair that other groups, whose politics may differ from the activist-businesses', start using politics to weaken those businesses and counter their influence.

For example, it's well known that Airbnb operates under the radar of housing regulations in many localities.

Perhaps people who disagree with Airbnb's politics should organize and bring about legislation that will eliminate or severely curtail Airbnb's ability to do business in their town, county or state.

Or perhaps the Republicans, though new federal liability laws, should render Airbnb's business model non-viable at the national level.

The left has been engaging in total war against the right for about a decade. They seek to impose social and economic penalties on those who hold political views different than their own. And they've done this, fairly secure in the knowledge that there would be few or no repercussions against them.

But I have a feeling that's starting to change.

<comment><USER5> > The left has been engaging in total war against the right for about a > decade.

Funny, I see it as almost the exact opposite. The backlash against Obama was a weaponization of politics on a scale not seen since the Civil Rights and anti- Vietnam War movements. I'd characterize the corporate response as businesses trying to operate in a cosmopolitan market, in a climate of nativist politics.

And your viewpoint feels especially ironic when a common conservative/libertarian argument against government interventions to advance civil rights is that the market will work it out. It seems we see how serious folks actually are about that idea, in these rare instances when it plays itself out in reality. Because let's also not pretend that this represents some type of long-term investment in social justice.

And is doubly ironic that you seem to be advocating that the government punish a private entity for stances that seem well within its rights.

<comment><USER4> _> And is doubly ironic that you seem to be advocating that the government punish a private entity for stances that seem well within its rights._

It is ironic, I'll admit.

But in total war, there are no rules. You inflict suffering on your enemy by whatever means are available.

The left gleefully destroyed a family-run pizza joint because of the answer one of the family members gave to a reporter. They made an example of this family for the rest of the country to learn from: "Publicly express a political opinion we disagree with, and run the risk of being destroyed."

It's only fair that Ben Chesky and Airbnb incur a similar risk for their forays into the political arena. And they're very rich, powerful and well- connected people, who are backed by other rich, powerful and well-connected people. It would take something as powerful as a Republican-controlled federal government to do them some serious damage.

And if that happens, I'm certainly not to rush to their defense.

<comment><USER6> _The left gleefully destroyed a family-run pizza joint_

Would you elaborate on this? What are you referring to?

<comment><USER4> Memories Pizza. Google it.

<comment><USER6> Thanks! If you're going to bring up Memories Pizza, I think it's fair to compare this to Pizzagate.

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

The idea that we have no further recourse other than total war is very troubling. I don't think a lot of people are willing to give up trying to work together quite yet.

<comment><USER7> The only common denominator appears to be pizza.

Memories Pizza's owners were interviewed about Indiana's Religious Freedom Restoration Act [0] and answered a hypothetical question by saying they wouldn't cater a gay wedding, but they'd serve anyone. The reporter ran a headline, "RFRA: First Michiana business to publicly deny same-sex service." This was false on numerous levels, but went viral, triggering a backlash.

Pizzagate is a human trafficking conspiracy with different mechanics. I guess Comet Ping Pong employees got backlash for allegations, but the similarities end there.

[0] [https://en.wikipedia.org/wiki/Religious_Freedom_Restoration_...](https://en.wikipedia.org/wiki/Religious_Freedom_Restoration_Act_\(Indiana\)#Impact)

<comment><USER6> Pizzagate similarly went viral across social media. Is the meaningful distinction you'd like to make is that it was reported in a newspaper? In this case, Michael Flynn, then part of Trump's transition team, tweeted vague insinuations of child sex crimes which surely did nothing to dampen suspicions.

 _U decide - NYPD Blows Whistle on New Hillary Emails: Money Laundering, Sex Crimes w Children, etc...MUST READ!_

Even after the shooting, Flynn's son tweeted explicitly:

 _Until #Pizzagate proven to be false, it 'll remain a story. The left seems to forget #PodestaEmails and the many 'coincidences' tied to it._

Here on HN there were plenty of comments if not actively promoting the Pizzagate conspiracy theory, entertaining the possibility that it was legit. The employees of Comet Ping Pong and nearby businesses received backlash, including death threats. This escalated to a shooting by someone who took it upon himself it investigate the matter personally. Fortunately no one was shot. Pizzagate was false on numerous levels.

Both of them are misrepresentations that went viral, supported by people driven by partisan issues. I think both of them are atrocious and shouldn't be excused. They are unfortunately a symptom of the terrible state of current political discourse.

I'm genuinely interested in the distinction you draw between them.

<comment><USER7>
      Both of them are misrepresentations that went viral, supported
      by people driven by partisan issues.

Though, I agree this criteria applies to both stories, it's also too general. Respectfully, this criteria fits ANY news event.

A key distinction I'd draw is that the Memories Pizza saga began due to a singular mistake in reporting that spun out of control. Had that one mistake not happened, Memories Pizza likely wouldn't have blown up. Whereas, Pizzagate became the label for an inter-related network of human trafficking conspiracies that had already gained critical mass. People that started piling on, weren't necessarily piling on false-hoods. Instead, they were piling on unverified conspiracies.

<comment><USER6> Agreed on the "too general" part. Not sure if it's useful to narrow it down, as I don't think that definition is doing any more work for the discussion.

 _People that started piling on, weren 't necessarily piling on false-hoods. Instead, they were piling on unverified conspiracies._

What's the distinction here? That on the one hand they're saying "I'm not sure, but it sure looks suspicious!" and on the other "Look what they did!" Is that a meaningful distinction?

Why the focus on a singular mistake in reporting?

At the end of it all, adding weight to Memories Pizza with a statement like

 _The left gleefully destroyed a family-run pizza joint because of the answer one of the family members gave to a reporter._

while dismissing Pizzagate which was arguably fueled in part explicitly by the Trump campaign (as opposed to some amorphous "left") seems grossly unfair.

I don't think I have anything to add to this. It looks as empty and partisan as the original comment, unfortunately. I commend you for stepping up and taking the time to discuss this with me. I honestly appreciate it. I'd have liked to have heard from 'rhapsodic as well.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I'm reading around here that Airbnb's contribution in this matter is limited to providing the infrastructure to volunteer hosts for free, which is still good. My question is: do they also provide insurance to these hosts? I mean if one of the volunteer hosts suffers damages in her/his property of 10'000$ hosting refugees, will airbnb cover it? Genuinely curious, not judging here.

<comment><USER9> Right here: [https://www.airbnb.com/guarantee](https://www.airbnb.com/guarantee)

The $1,000,000 Host Guarantee

</comment></comment><comment><USER4> The tweet should have said, "Airbnb is helping people to provide free housing to refugees and anyone not allowed in the US."

</comment><comment><USER10> Are they planning to force people on the platform to host refugees (paid, obviously)? I can see several practical problems with that; taking people from their home to a place where they do not speak the language or know the local culture and just dropping them off in standard residential housing can't end well for anybody. This also can't help AirBnB's case when it comes to NIMBYism.

<comment><USER11> Why would it be more of a problem with refugees than other, paying guests?

Afaik, most US citizens staying at Japanese AirBnB's (for example) do not speak Japanese nor know the local culture. Do you think that's a problem as well? When I stayed at an AirBnB in Italy I knew nothing about the local culture nor spoke the language, nobody thought that was an issue.

Or is this just, you know, racism?

<comment><USER12> Tourists do not commonly suffer from PTSD and a host of other mental problems. There are real, valid reasons why you don't just dump them in a random suburb and let them fend for themselves.

Incidentally, insulting people is not conducive to healthy debate. Please consider whether calling your opponent (or their actions) racist will increase our ability to persuade them to change their position, or just make them entrench their position (even against more persuasive arguments).

</comment></comment></comment><comment><USER13> Stunt or Stand? So much noise right now it's hard to tell. Hope Time demonstrates this as a genuine move. BigCo with lots of PR weight can really keep the story at the top (or push it over the top)

<comment><USER14> I'm an employee, so for what it's worth, this isn't something out of the blue. Airbnb has a disaster response program that gets activated all the time for natural disasters and other tragedies - [https://www.airbnb.com/disaster- response](https://www.airbnb.com/disaster-response)

We're choosing to activate it in response to the executive order because it goes directly against our company mission to let people belong anywhere. I'm sure PR was part of the decision but if it helps people, I'd take it at face value.

<comment><USER15> Stunt, then, as AirBNB isn't providing any free housing. You're just going to browbeat people who offered _" housing to displaced neighbors and relief workers"_ to underwrite "your" provision of housing to people who are neither neighbors nor relief workers.

<comment><USER16> Let's be clear: if you are taking a public stand against the president of the United State who is known to be vindictive, you are taking a stand. ALL OF THEM. It is never just a stunt, because a stunt means there's no risk.

<comment><USER17> >"It is never just a stunt, because a stunt means there's no risk."

I'm sorry I fail to see what risk has now been assumed by AirBnB by having a cofounder send out a Tweet.

<comment><USER18> You say that as if nothing important happens on twitter, but as we have seen recently, the president pays a lot of attention to twitter.

<comment><USER17> Its not a comment on the importance of Twitter. But rather composing a tweet requires no considerable effort. Its the same as when people change their FB profile pic and considerate it action.

An action that involved real effort would have been a twee that contained a link to the AirBnB's program to help alleviate the problems faced by refugees.

The President of the US is an odd example because that runs counter to your point I believe. Trump Tweets are the ultimate symbol of vacuousness, vanity and impulse.

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> No they are not. Please correct the title.

<comment><USER3> Surely the tweet means that Airbnb are paying the fee that otherwise would be paid by guests? We only have the tweet to go on, so what makes you think otherwise?

<comment><USER20> An employee on this thread linked to their Disasters Program, where this even will appear, and which works like that.

<comment><USER21> No, it doesn't.

Airbnb waives the airbnb fees, but does not pay the host for accommodations offered under the program. To me, that is not "Airbnb is providing free housing".

<comment><USER20> Sorry, I wasn't clear. By "like that", I meant not paying the host :)

</comment></comment></comment></comment></comment><comment><USER22> Translation: "AirBnB looks for cheap positive publicity".

</comment><comment><USER23> Illegal immigrant? [http://www.huffingtonpost.in/2017/01/29/indian-american- who-...](http://www.huffingtonpost.in/2017/01/29/indian-american-who-inspired- swades-detained-questioned-about-i/)

</comment><comment><USER20> So to be clear, Airbnb is helping volunteering hosts to provide their houses for free, right? If so, this tweet is misleading, from its wording I expected Airbnb was compensating the hosts.

<comment><USER3> They should take it a step further and pay the hosts double to accommodate refugees. After all, if any guests are the sort to hang around the house all day instead of seeing the sights, it's refugees. They don't have sight-seeing money, and they have more luggage than normal guests. They're kind of stressed out too, due to being refugees.

</comment></comment><comment><USER24> Airbnb IS NOT providing free housing. Airbnb isn't paying for housing refugees. Potential hosts can offer free housing, which just makes Airbnb like Couchsurfing. So Airbnb isn't paying for anything here or even giving anything for free.

People who really want to help can use CouchSurfing web site instead of promoting a for profit business.

If Airbnb offered free housing it would mean they would actually pay the host to house refugees, they are not.

<comment><USER3> How do you know this?

</comment></comment><comment><USER25> Why have not you done that before for existing homeless people or other people in need? This just smells like ugly marketing scheme.

I mean, it is good if someone in need is helped, but why now and why that wording and scope to only refugees?

<comment><USER26> That's dumb argument, sorry. Disaster relief is temporary and help is provided to people who suffer from external circumstances. Housing for homeless is a daily job for the government and it is different, significantly bigger problem, for which the solution is not affordable for any single private organization or person. Private organizations have limited resources and they have the right to choose whom to support first. Moreover, here the main support comes not from Airbnb, but from the hosts who offer their houses for free. Airbnb contribution here is to provide a web service for hosts and people in the need and not to take money for that.

<comment><USER25> Well, US gov (Clinton and Obama) created this refugees in the first place. They are all coming from the areas that this administrations ruined in one way or another.

<comment><USER27> There's a small eight year gap in your list there.

<comment><USER25> yeah I forgot him, just wanted to say that it is not new politics or just Obama but many recent presidents

</comment></comment></comment></comment></comment><comment><USER28> Nice test.

I wonder how many of the people protesting the entry ban will offer their flats for free to the refugees?

</comment><comment><USER29> Airbnb's investors are happy :)

</comment><comment><USER30> For unemployed people who have lost their homes and live on the streets or for thousands of homeless poor Americans, AirBn(another Soros backed company) was never so sensitive. But for refugees who can afford the 1000+ $ trip to the States, Airbn is so humane. Please, my mind hurts.

</comment><comment><USER31> Unfortunately this will look like a PR move. Why can't ordinary people step in to host the people affected for this short period?

<comment><USER16> Good idea too, but that's harder to organize (on a practical level and at scale).

</comment></comment><comment><USER32> Airbnb should run a promotion for free nights at hosts who live within a mile of a Trump property. He'd notice if someone was trying to take business off him, even nominally.

<comment><USER33> > _Airbnb should run a promotion for free nights at hosts who live within a > mile of a Trump property._

How much longer do you think AirBnB's regulation flouting would last if they went to war with the President?

<comment><USER34> Given that the benefits of renting ones house out on Airbnb accrue almost exclusively to coastal 'liberals' the regulation flouting is possibly not long for this world anyway.

</comment></comment></comment><comment><USER35> Excellent news on an otherwise pretty terrible day.

Brian Chesky and the entire Airbnb team are showing America at its very best: forward-looking, innovative, diverse, multicultural and. The contrast with the Trump-type people -- primarily angry, insular, bitter old people who are terrified of brown people and still live within 10 minutes of their high school -- could not be more striking.

<comment><USER8> I dont think such generalizations will help much. You are displaying yourself as angry, insular and bitter. Consider the option of trying to understand ppl with different opinions, however disgusting Trump's speeches are - IMHO they are.

</comment></comment><comment><USER36> If you do this please then release the % of users who've been told "you've been chosen to host a Muslim refugee" and have accepted ;^}

It's easy to pretend you're hospitable and generous when you're not paying the toll of your actions. You're not providing "free housing", the actual owners of the houses are. This is a unilateral announcement because you don't know if hosts will accept.</comment>


Show HN: WebGL Duck Hunt remake - <AUTHOR> http://parrothunt.nergal.se:8080

<comment><USER2> It won't zoom if you are out of bullets, the block should be on mouse release IMHO

<comment><AUTHOR> Noted :)

</comment></comment><comment><USER2> Now this is something HN worthy</comment>


Chapo Trap House 186 with Richard Wolff - <AUTHOR> https://soundcloud.com/chapo-trap-house/episode-186-executive-producer-feat-richard-wolff-21818 <comment><USER2> First time I'm seeing Chapo on Hacker News!</comment>


In Solidarity with a Free Press: Some More Blasphemous Cartoons - <AUTHOR> https://firstlook.org/theintercept/2015/01/09/solidarity-charlie-hebdo-cartoons/

<comment><USER2> Thank you for bringing a larger perspective to the issue.</comment>


Thoughts on Rust bloat - <AUTHOR> https://raphlinus.github.io/rust/2019/08/21/rust-bloat.html <comment><USER2> At the risk of being slightly tangential, I've been sorely wanting to air this particular grievance with Rust for some time. It's somewhat related, since the author mentions their package system. Its package ecosystem isn't nearly in the horrible state that node's is, but having a package system shouldn't be a substitute for designing a useful standard library for a language. I think that the attraction to 'small languages' is very much misplaced. If I can't get through Rust's official documentation without being recommended the use of third party packages for basic functionality (getopt, interfacing with static libraries... Etc) then the designers have made a terrible error.

<comment><USER3> Opinions on this are a dime a dozen. You often see the reverse of it too, for example, you might have heard that "Python's standard library is where things go to die." You could just as easily call that a "terrible error." The fact that Python's standard library has an HTTP client in it, for example, doesn't stop everyone from using requests (and, consequently, urllib3) for all their HTTP client needs. So despite the fact the standard library provides a lot of the same _functionality_ as a third party dependency, folks are _still_ using the third party dependency.

I think the size of the standard library is just one of possibly many contributing factors that leads to a large number of dependencies. I think a part of it is culture, but another part of it is that the tooling _enables_ it. It's so incredibly easy to write some code, push it to crates.io and let everyone else use it. That's generally a good thing, but it winds up creating this spiral where there's almost no backpressure _against_ including a dependency in a project. This means there's very little standing in the way of letting the fullest expression of DRY run wild. There are some notable examples in the NPM ecosystem where it reaches ridiculous levels. But putting the extremes aside, there's a ton of grey area and it can be pretty difficult to convince someone to write a bit more code when something else might work off the shelf. (And I mean this in the most charitable way possible. I find myself in that situation.)

I do hope we can turn the Rust ecosystem around and stop regularly having dependency trees with hundreds of crates, but it's going to be a long and difficult road. For example, not everyone even agrees with my perspective that this is actually a bad thing.

<comment><USER4> Python's standard library is where things go to die because of the terrible adhoc versioning system (the module name _is_ the version number) and dynamic typing means they are afraid to change anything. But even then it's still better than having no standard library at all.

The advantage of a standard library is that you only need to learn one API instead of a dozen different APIs for doing the same thing, which means you can develop a degree of mastery over it. It also reduces the friction for using better abstractions. e.g. Every professional Python programmer knows defaultdict, whereas I rarely see that data structure used in other programming languages, it's too much of a leap to install a dependency to save a few if statements, but it all adds up.

<comment><USER5> > The advantage of a standard library is that you only need to learn one API > instead of a dozen different APIs for doing the same thing, which means you > can develop a degree of mastery over it.

The rust ecosystem has done well to converge on certain crates as sort of replacement for missing std features.

In practice (at least in the rust ecosystem), I only need to learn one interface for:

* regex (regex)

* serialization (serde)

* network requests (request)

There are de-facto base crates in the ecosystem.

<comment><USER6> As a relative outsider, it's not obvious at all that these are the right crates to choose. I appreciate the commitment to long-term stability that the standard library appears to have, but that benefit goes out the window if I accidentally rely on a third-party crate that changes its API every six months.

Looking at crates.io, regex looks pretty safe, as it's authored by "The Rust Project Developers" and includes explicit future compatibility policies. Unfortunately, I can't find an index of only the crates maintained by the Rust team.

Serde is obviously popular, but at first glance is a giant Swiss Army knife that will likely have lots of updates to keep track of that are completely unrelated to my project (whatever it is). If I search for JSON, I get an exact match result of the json crate, followed by a bunch of serde-adjacent crates, but not serde itself.

Request hasn't been updated in 4 years, and has a total of less than 7000 downloads.

<comment><USER7> That sounds like something that could be solved by having crates.io provide a curated list of common popular crates for certain features. That is, this seems to be mostly a documentation issue.

<comment><USER6> It's really a reputation bootstrapping problem, for which popularity can be a useful proxy. For me to use third-party code, I have to trust that the future behavior of the developers will be reasonable: I want my side projects that don't get touched for months or years to still mostly work when I get back around to them.

Not everyone or every project will have the same desires, though. Sometimes, a fast-moving experimental library is the right choice. The trouble is figuring out which I'm looking at.

<comment><AUTHOR> I'm not sure I follow these concerns about "working in the future" \- as long as you specify versions that work for you in your Cargo.toml file, that should work at any point in the future given that you use Rust 1.x.

If you'll want to update to always be on the latest version of each crate, well that discomfort about them potentially not working is part of the price.

<comment><USER6> If I come back to something, it's because I want to resume active development. Keeping a dependency pinned at an old version makes that more difficult in various ways, so I personally value forward compatibility.

Not everyone does, and that's fine. I just want to know what a library developer's stance on it is before I try to use their library.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> _Use polymorphism sparingly_

I think it is a little ironic that he speaks of performance culture but simutaneously advises to use dynamic dispatch and avoid polymorphism. I can see the justification in non-critical code paths, but serialisation is a pretty important part of most networked software nowadays so I do not think that smaller binaries and faster compilation times (better developer experience) justifies a performance hit in the form of dynamic dispatch through crates like miniserde.

<comment><USER9> Performance culture has you measure the actual performance implications, then make an informed decision. Is the code on a performance-critical path? Maybe some of your serialization code is, but it's extremely unlikely that a dynamic dispatch when parsing command line args is the reason your app is slow. Also be aware that highly inlined code does nicely in microbenchmarks but might have significantly negative performance implications in a larger system when it blows out the I-cache.

<comment><USER10> > Also be aware that highly inlined code does nicely in microbenchmarks but > might have significantly negative performance implications in a larger > system when it blows out the I-cache.

I see this assertion a lot, but I have never actually seen a system in which inlining that would otherwise be a win in terms of performance becomes a loss in a large system. LLVM developers seem to agree, because LLVM is quite aggressive in inlining (the joke is that LLVM's inlining heuristic is "yes").

I'd be curious to see any examples of I$ effects from the effects of inlining specifically in large systems mattering in practice.

<comment><USER11> Fiora refactored the MMU code emitted by Dolphin to a far jump, which had significant performance improvements over inlining the code [0]. She had an article about it in PoC || GTFO [1].

[0] [https://dolphin-emu.org/blog/2014/09/30/dolphin-progress- rep...](https://dolphin-emu.org/blog/2014/09/30/dolphin-progress-report- september-2014/#40-3194-fioras-fantastic-faster-mmu-by-fiora)

[1] [https://github.com/angea/pocorgtfo/blob/master/contents/issu...](https://github.com/angea/pocorgtfo/blob/master/contents/issue06.pdf#page=6)

<comment><USER10> Interesting, that's a good case. Though it's a bit of an extreme one, because it's jitcode for a CPU emulator. I'm not sure how relevant that is to Rust, though it's certainly worth keeping in mind.

<comment><USER11> In my experience, i$ is much bigger than everyone thinks, and they over- emphasize optimizing for it whenever someone brings up code size. It can soak up a lot. That said, for JITs, where code is not accessed very often and in weird patterns, it can matter quite a lot.

<comment><USER12> hm, I've run a lot of profiling of various software through the years and never once instruction cache misses have been a problem, in large template- rich boostful C++ codebases

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> It looks like the author is most bothered by compile times of dependencies.

Cargo needs to do better with shared caches (so you compile each dep at most once per machine) or ability to get precompiled crates (so you don't even compile it).

Incremental improvements of compiler speed or trimming of individual dependencies won't bring the 10x improvement it needs.

<comment><USER14> Cargo compiles dependencies in parallel so if you have lots of cores you'll hear your fans spin up.

I see a lot of difference between my i5 laptop and i9 desktop.

<comment><USER15> As a case in point, I have a project that uses amethyst and nalgebra (and their 200 transitive dependencies).

On upgrading from an OC i5-4670k to a r9-3900x, my compile times for a clean release build went from 20 minutes to 2.

<comment><USER16> But two minutes is still a lot of time to wait for a build, especially if you're doing gamedev and want to prototype something fast.

It seems nalgebra is the culprit here: because Rust doesn't yet support const generics, it has to use some hacky type-level metaprogramming to represent numbers, and that will definitely destroy build times.

<comment><USER17> 2 minutes for a full build from scratch. Incremental builds afterwards take seconds, though unfortunately linking of big projects can still sometimes takes up to around a minute.

<comment><USER18> My toy project that I ported from a Gtkmm article done in the days of "The C/C++ Users Journal" takes around 25 minutes to build from scratch on a Asus 1215B netbook (dual core, 8GB, HDD).

The original code, after being migrated to an up to date version of Gtkmm, takes a couple of seconds with GCC 7, not more than one minute if at all.

The big difference? I don't need to compile from scratch all the 3rd party dependencies.

With every release from Rust I do a clean build to assert how much it has improved.

It was much worse, so congrats on the work achieved thus far, but it is still a pain to set up a project from scratch.

</comment></comment></comment></comment></comment></comment><comment><USER19> Rust bloat is a serious issue that is not being taken seriously I think. I raised the issue about platform size in June:

[https://github.com/rust-lang/rust/issues/61978](https://github.com/rust- lang/rust/issues/61978)

and its actually gotten worse since then, significantly worse. In the 2 months since then the installer has increased from 203 MB to 299 MB. Also unbelieveably, Rust has failed to address package balkanization which I would say has ruined the Node community. A popular package is "cargo-edit", which currently pulls in 239 other crates:

[https://github.com/rust- lang/cargo/issues/2179#issuecomment-...](https://github.com/rust- lang/cargo/issues/2179#issuecomment-523567384)

<comment><USER8> _Also unbelieveably, Rust has failed to address package balkanization which I would say has ruined the Node community._

I'd say that this is more of a culture thing rather than a language thing.

<comment><USER20> Whether culture or language, if it is not addressed then expect similar results :(

<comment><USER21> The primary way I can see to address this is to make packaging more difficult. Are there other steps that a language can take to avoid this problem?

<comment><USER20> A few ideas: 1) Remove the ability to unpublish / yank crates. A published crate should be immutable, but the crate's metadata should always be updateable by the maintainer.

2) Improve the metadata that describes a crate so that it is easy to tell if a crate should be used. For example, is the crate beta quality? Was a serious error found in the crate and it needs to be marked as "not safe"? Is it a Long-Term Support release? Etc.

3) As a culture, disallow trivial crates. No "is-odd" or similarly low effort crates. These just add bloat since the have so little functionality compared to their overhead. If your crate's toml is larger than the crate's code, you are doing it wrong.

<comment><USER22> Ironically, "no trivial crates" is almost exactly the opposite of what the article seems to want, which is only small crates so you're not importing lots of needless bloat. It's hard to please everyone!

<comment><USER9> I talk about this a bit, I'm in favor of at least medium granularity crates, but if they break down into smaller features, where different use cases will meaningfully choose different sets of features, use feature gates. So, for example, you might have a "string formatting utilities" crate with a "left- pad" feature. (Note: this particular example is unlikely because the `format!` macro in the standard library can do it just fine)

</comment></comment></comment></comment></comment></comment></comment><comment><USER23> > There's also an effort to analyze binary sizes more systematically. I > applaud such efforts and would love it if they were even more visible. > Ideally, crates.io would include some kind of bloat report along with its > other metadata, [...]

This is what I always wanted (for Rust as well as for C) but never got around to hack together myself. I dreamt it up more as a feature of cargo though, something like 'cargo stats' or so. Shouldn't be to hard and cargo is extensible.

<comment><USER24> You might be looking for `cargo install cargo-bloat`

        $ cargo bloat
        Compiling ...
        Analyzing target/debug/mdbook

        File  .text     Size                 Crate Name
        0.5%   1.3% 166.4KiB                 regex <regex::exec::ExecNoSync as regex::re_trait::RegularExpression>::captures_read_at
        0.5%   1.3% 165.2KiB                  idna unicode_normalization::tables::compatibility_fully_decomposed
        0.3%   0.7%  95.0KiB               ammonia html5ever::tree_builder::TreeBuilder<Handle,Sink>::step
        0.3%   0.7%  92.5KiB                  idna unicode_normalization::tables::canonical_fully_decomposed
        0.2%   0.5%  64.6KiB               unicase unicase::unicode::map::lookup
        0.2%   0.5%  63.4KiB                  idna unicode_normalization::tables::is_combining_mark
        0.2%   0.4%  55.8KiB                 regex <regex::re_trait::Matches<R> as core::iter::traits::iterator::Iterator>::next
        0.2%   0.4%  55.5KiB                 regex regex::re_unicode::Regex::find_at
        0.1%   0.3%  41.7KiB unicode_normalization unicode_normalization::tables::composition_table
        0.1%   0.3%  36.2KiB               rand_hc rand_hc::hc128::Hc128Core::sixteen_steps
        0.1%   0.3%  33.8KiB                 regex regex::re_unicode::Regex::shortest_match_at
        0.1%   0.3%  32.4KiB               rand_hc <rand_hc::hc128::Hc128Core as rand_core::block::BlockRngCore>::generate
        0.1%   0.2%  31.4KiB               ammonia html5ever::tokenizer::Tokenizer<Sink>::step
        0.1%   0.2%  24.5KiB                  idna unicode_normalization::tables::canonical_combining_class
        0.1%   0.2%  21.8KiB                 regex aho_corasick::ahocorasick::AhoCorasick<S>::find
        0.1%   0.2%  21.6KiB                 regex aho_corasick::ahocorasick::AhoCorasick<S>::find
        0.1%   0.2%  21.0KiB                  clap clap::app::parser::Parser::get_matches_with
        0.1%   0.2%  20.3KiB                    ws ws::io::Handler<F>::handle_queue
        0.1%   0.1%  19.0KiB                    ws ws::connection::Connection<H>::read_frames
        0.1%   0.1%  18.7KiB            env_logger termcolor::Ansi<W>::write_color
        35.3%  91.6%  11.4MiB                       And 58189 smaller methods. Use -n N to show more.
        38.6% 100.0%  12.5MiB                       .text section size, the file size is 32.4MiB

<comment><USER23> Awesome.

<comment><USER24> It also has a wealth of options for tracking compilation time down to the dependent crate level.

</comment></comment></comment></comment><comment><USER25> In case anyone else was wondering what "druid" is, it's [https://github.com/xi-editor/druid](https://github.com/xi-editor/druid).

</comment><comment><USER26> >the release binary is now 5.9M

A typical smartphone ships with around 10,000 times this much storage capacity and enough RAM to hold it 100 times over.

This is bloat?

I mean, I get it, the binary used to be only 2MB, 1/3rd the size. But are numbers this low really worth worrying about? I think a GUI app in 6MB is hugely impressive.

I genuinely thought he was going to say it was 100MB or something higher.

<comment><USER27> _I think a GUI app in 6MB is hugely impressive._

Windows 3.11 required 4MB of RAM and the whole install took <20MB of disk space, and that's _the entire OS_ with all of its utilities and libraries.

 _A typical smartphone ships with around 10,000 times this much storage capacity and enough RAM to hold it 100 times over._

The fact that it can hold that much does not make it right to waste resources. To contrast, video or audio is a good use of the space it takes up in general, because there has been and continues to be research in compressing that data, and it's pretty close to being as small as it can practically be. Apps are not a good use of space because we know roughly what the lower limit is --- and the current average is a few orders of magnitude more than that.

<comment><USER28> > Windows 3.11 required 4MB of RAM and the whole install took <20MB of disk > space, and that's the entire OS with all of its utilities and libraries.

Sure, and the moon landing used computers with less processing power than your kids calculator. That doesn't mean we should use those to put people on the moon over faster hardware.

Does the fact that older, slower and smaller hardware and software once existed mean we should spend time, resources and potentially sacrifice features to... what? Hark back to the old days where we had 128kb of memory and hard disks the size of vinyl records?

A 6mb GUI app _is_ impressive for right now. At some point in time it would have been absolutely massive, and the way it's going, at some point in the future it may well be absolutely minuscule. And that's not a bad thing.

<comment><USER29> If today's computers did things a million times better, or did a million more things than 25 years ago, I'd agree with you, but from a user perspective a modern computer is not really all that different from a Windows 3.11 machine. The screens are bigger and we have Internet now, but the experience of, e.g., writing a letter in Word is basically the same.

<comment><USER30> The screens alone are responsible for a lot of size increases (framebuffers in RAM, high res media) but also, unlike in Windows 3.11, modern Word allows you to mix English, Japanese and Arabic in a document, allows use of a screen reader, and has a thousand features that you personally don't need but everyone has some set of features that they use, and taking away any of them would offend _someone_.

<comment><USER18> And me thinking I already was able to do that with Word on NT 4.0 and Dragon NaturallySpeaking.

</comment></comment></comment></comment></comment></comment><comment><USER31> It's a little unfortunate that some of the cool features of Rust need to be put into the "use sparingly" category. I know that polymorphism, async, etc. should be used judiciously anyway, but still.

 _One recent case we saw a similar tradeoff was the observation that the unicase dep adds 50k to the binary size for pulldown-cmark. In this case, the CommonMark spec demands Unicode case-folding, and without that, it's no longer complying with the standard. I understand the temptation to cut this corner, but I think having versions out there that are not spec-compliant is a bad thing, especially unfriendly to the majority of people in the world whose native language is other than English._

In the Python world, you can install an "extra" along with a package. So you can make the deliberate decision to omit Unicode case folding from your CommonMark parser. Maybe something like that is possible with a crate?

That said, I think this is a non-feature in the spec, if anything. I see the value in recommending (but not requiring) Unicode normalization, but I don't see the added value of Unicode-aware case-insensitivity. Maybe it's more important in non-Latin text.

<comment><USER32> > It's a little unfortunate that some of the cool features of Rust need to be > put into the "use sparingly" category.

This is just the reality of engineering -- there are no silver bullets.

Sure, it'd be nice if any language could give you the space efficiency of dynamic dispatch with the runtime efficiency of monomorphized generics, but those two things are _fundamentally in tension_. Neither Rust nor any other language can fix that.

Rust at least gives you a fairly easy choice of which you want in any given circumstance. Most languages just pick one or the other universally.

<comment><USER33> One way to fix it is jitting.

I am wondering if Rust has a project of shipping Rust compiler embedded in your executable, so that one could compile sym into code.

<comment><USER32> > One way to fix it is jitting.

Also not a silver bullet, because there's non-zero costs in memory, CPU overhead, I$, etc to the statistics gathering, stop-and-jit-the-dynamic-call- and-change-the-call-sites and so forth.

In long running server processes this can mostly amortize out nicely over a very long run, but for interactive applications it can add noticeable lag.

</comment></comment></comment></comment><comment><USER34> > _For one, it's common that you get different versions anyway (the Zola build > currently has two versions each of unicase, parking_lot, parking_lot_core, > crossbeam-deque, toml, derive_more, lock_api, scopeguard, and winapi)._

This seems like a specific thing that would be a measurable win and a not uncommon problem (e.g., I have a test kernel module that doesn't have many dependencies, and it still has two generic-arrays, two proc-macro2s, and two unicode-xids). Is there something that could be done here technically, such as pull requests to bump common crates to using the same version of even-more- common dependencies?

<comment><USER35> > generic-array

This is up to 0.13.2... plenty of supposedly breaking API churn, no wonder you have two copies.

Yes, your dependencies probably rely on different 0.x versions, and a pull request could fix that. You can inspect your Cargo.lock file to figure out which ones are to blame.

> Is there something that could be done here technically, such as pull > requests to bump common crates to using the same version of even-more-common > dependencies?

Yep, that's the fix.

README.md badges like [https://deps.rs/repo/github/rust- lang/cargo](https://deps.rs/repo/github/rust-lang/cargo) can alert people to out-of-date dependencies.

You can even automate some of the pull requests with something like [https://github.com/marketplace/dependabot- preview](https://github.com/marketplace/dependabot-preview) if you control the repositories.

</comment></comment><comment><USER36> How many people would use a Rust cloud compiler?

Suppose it cuts build time from 5 minutes to 30 seconds....

Technically, a transparently mirrored file system, a strong compiler cluster (memory, cores, etc). And some predictive ML. But you end up with a binary- equivalent (verifiable) output.

Any thoughts ?

<comment><USER15> I wouldn't use it. Incremental builds aren't that bad, and I'd have a hard time trusting third party compiled libs enough to include in a release from a new service that hasn't built up trust the way that say a Linux distro has.

While you could assume any maliciousness or security compromise would be caught, as you can see from the rubygems news today this is not instant and it adds another point of failure.

</comment></comment><comment><USER37> Do dynamic libraries really help? They only save space in the case where 1) you are running many different programs and 2) they all use the same libraries in the same versions. If you're running multiple copies of the same program, they share code, at least on Linux.

<comment><USER9> Depends on the use case. I'm thinking about GUI, where on Linux you can write code that links against (say) Gtk, and thus can pull in lots of libraries while the executable itself is tiny. With the current state of the Rust ecosystem, you basically have to build the GUI toolkit and bundle it with your app.

</comment></comment><comment><USER38> To respond to one particular point from the post:

> Once you accept bloat, it's very hard to claw it back. If your project has > multi-minute compiles, people won't even notice a 10s regression in compile > time. Then these pile up, and it gets harder and harder to motivate the work > to reduce bloat, because each second gained in compile time becomes such a > small fraction of the total.

This particular problem can be addressed head-on, I think. It would seem feasible to have the compiler to distinguish between the target application (library) and the dependencies. Then it could report the compile times as separate values. This could be built into CI/CD tools as a way to catch application level compile time changes.

Of course, this approach wouldn't tell the entire story, but it would likely serve as a canary in the coal mine at least.

</comment><comment><USER39> > Digging into xi-editor, the biggest single source of bloat is serde

flatbuffers seems to be the go-to serialization lib, in terms of speed and mem efficiency:

[https://docs.rs/flatbuffers/0.6.0/flatbuffers/](https://docs.rs/flatbuffers/0.6.0/flatbuffers/)

</comment><comment><USER40> It highly depends on use case. If I have web application running on 100 nodes 5mb vs even 10mb has such a minuscule cost that it not even worth calculating. Now benefits for ops from just having to push a single static binary without external dependencies are fairly decent.

</comment><comment><USER41> Good points, but I'd like to point out that nothing on this post is Rust- specific.

You can have the same issue if programming in any other language, including C: excessive indirections, inefficient algorithms, bad abstractions, excessive use of unnecessary libraries, etc.

It's indeed easier to "bloat" your resulting binary in C++ or Rust given the easiness to do higher-level abstractions; since you can more easily program complex solutions you also need to consider your design and the trade-offs on your code.

I'd also like to point out that, in comparison:

* Rust bloat is a speck compared to hundreds of megabytes for a similar Python program + runtime including the same amount of code.

* Rust bloat can be mostly optimized away for systems that really care about excess/unused code - you have #![no_std], disabling of backtraces, aborting on panic, and a lot of other optimizations that throw away a big portion of extra functionality not needed for things like embedded. You have little alternative on things like Go besides removing debugging symbols and doing tricks like "dynamic decompression" (which could also be applied to Rust programs to further reduce their size, btw).

Bottom line is: Rust makes it easier for you to "just add a new library" and it also make you more mindful of the bloat, but we need to keep it in perspective.

</comment><comment><USER42> It looks like the `fluent` library is to blame for the bloat here.

I have myself made another localization library that use a simpler model and compiles quite fast when using the rust `gettext` backend: [https://github.com/woboq/tr](https://github.com/woboq/tr)

</comment><comment><USER43> I don't understand the advice: "Use async sparingly"

It doesn't make sense. Either your complete code base is async or it is not. If you have a single blocking code point in it. It is not async anymore, since it can't handle any other schedule async tasks while waiting for the blocking call.

<comment><USER9> Probably could have worded it better. I didn't mean, "only use a little bit of async," I agree that doesn't make sense. I meant, "use async if your problem really needs it, otherwise avoid it."

<comment><USER43> The main thing it is you can't really add async when you need it, because if you have written enough sync code, turning it into async amounts to a major rewrite/refactor of the code including choices for dependencies, code for parallel code execution are different in async etc.

</comment></comment></comment><comment><USER44> I'm naive to rust, but I do get your concern. For a small part in a project, I used a tokio based library. And it just exponentially increased my build time.

What about if rust could support something like dynamic Linking/loading. Like have some crates globally installed and while building we could link to the global one instead of locally getting all the crates. Like C/C++does it right?

</comment><comment><USER45> Serialization will always be slow for obvious reasons, that's why binary protocols and messages started to emerge (HTTP/2, gRPC) instead of serializing/deserializing everything to JSON and back.

<comment><USER30> grpc uses protobuf which still does traditional serialization. The cool stuff is capnp/flatbuffers, where you write to and read from the "serial" memory directly.

</comment></comment><comment><USER46> Seems like a lot of this comes from rust defaulting to allowing several different versions of a library to be linked in ... there's def some other pieces. But that seems like a biggie

<comment><USER47> Do you know how to not do this "default"? I would love to try it.

<comment><USER35> So far in my toy projects I've mostly seen this crop up from depending on a lot of 0.x crates still going through significant version churn and legitimate breaking changes, where A and B legitimately can't use the same version of C as-is due to API changes, because they haven't been keeping their dependencies up to date.

The fix is simple, when it happens: Patch A/B to use the latest major version of C, fixing the source code as necessary. You can [patch] locally until upstream accepts your Pull Request - which might include a [https://deps.rs/repo/github/rust- lang/cargo](https://deps.rs/repo/github/rust-lang/cargo) badge in their README.md, to encourage them to continue to keep C up-to-date.

</comment></comment></comment><comment><USER48> Maybe rust core/std/alloc should built with many smaller crates that are cached better and have fewer dependencies?

Also: [https://github.com/johnthagen/min-sized- rust](https://github.com/johnthagen/min-sized-rust)

</comment><comment><USER49> Since it's not possible for a Standard Library to have everything a programmer needs, programming languages shouldn't have Standard Libraries but Standard Repositories.

</comment><comment><USER50> I just don't feel like rust can replace C/C++, because the syntax is not simple enough. Rust has a lot of cool things, but to me syntax simplicity is more important.

Maybe I have a hard time adapting myself to rust? Maybe my brain is too much "wired" to a C style syntax. It still seems that to me, C-style syntax is just better.

I would rather prefer a C++-like language that breaks down from backward compatibility with C while keeping its simplicity, has STL containers, and is simpler to read and use.

Rust is cool, but I'm just curious if it can really be adopted for large project to justify rewriting existing code.

<comment><USER51> C++ has simple syntax? Since when?

<comment><USER50> Since you're not really required to use templates or inheritance at every corner.</comment></comment></comment>


Your brain gets used to lying as you do it more - <AUTHOR> http://www.theverge.com/2016/10/24/13375950/lying-brain-dishonesty-study-learning-to-lie-amygdala <comment><USER2> Confirms long-term personal observation of people gifted with this "skill".

</comment><comment><USER3> As someone who used to lie a lot as a child, this is 100% true. I have to think through half of what I say before I say it to work out whether I'm lying or not, most ridiculous 'habit' ever.

</comment><comment><USER4> This isn't surprising. Some people lie out of habit - they lie even when it doesn't benefit them.</comment>


An Introduction to Natural Language Processing - <AUTHOR> https://blog.monkeylearn.com/the-definitive-guide-to-natural-language-processing/ <comment><USER2> Not really a definitive guide, but more like a neat introduction. Can someone approaching 30 switch to this with a CS background and a professional background in web development? How much self study would one need before being taken seriously for a data science (or similar) role?</comment>


Finding Family Is Big Business: Ancestry.com Files For $75 Million IPO  - <AUTHOR> http://www.techcrunch.com/2009/08/03/finding-family-is-big-business-ancestrycom-files-for-75-million-ipo/ <comment><USER2> What could they be raising capital for that needs an IPO?

<comment><USER3> Maybe this is just an exit for the founders and investors?</comment></comment>


Father Time - <AUTHOR> https://www.newyorker.com/magazine/2019/01/07/father-time <comment><USER2> Everyone dies eventually. Either you are going to be taken away too young or you will grow old and weak. There will come a time in your life that you need to acknowledge that the peak of your life has passed and that you need to be content with knowing you will slowly fade away.

I'm currently 33 but when I was 30 I was diagnosed with cancer. I had two surgeries and I may need localised chemotherapy in the midterm but it was a fairly minor event as far as the term cancer goes. For quite a while I didn't know it was a minor thing, however, and it made me confront my own mortality. It has been one of the most significant events in my life and it has led to my life improving dramatically. I realised that I was unhappy with my life and that I didn't want to die after living that life. I make far more decisions now based on living a life that I'll be happy with. I set plans in motion and I go out of my way to fix things that I'm unhappy about. I hate to think how I'd feel if I first confronted my mortality when it was too late to change the course of my life.

<comment><USER3> Interesting! What sort of things did you change in your life that led to your happiness?

<comment><USER2> So I make decisions that will lead to a path of happiness, I look at my life through questions like "what do I want my life to be like in X years?".

I wanted to be a software developer so I've been studying CS formally for 2 years now and I'll be changing careers in either 12 or 24 months depending on some factors.

I put in more efforts to maintain a social network. I'm introverted and really enjoy time by myself but I realise that I'm actually happier when I spend time regularly with friends. The difference between solitude and alone is determined by if you want to be by yourself. I was enjoying solitude until I was diagnosed, then I suddenly felt alone.

I don't have anxiety anymore. This wasn't deliberate, I simply stopped worrying about things after the whole cancer scare. I'm alive and healthy, so even if things go bad then I'm still in a better spot than I could be.

</comment></comment></comment><comment><USER4> David Sedaris is great. If you have not read it, I would suggest you pick up "Me Talk Pretty One Day". I prefer the audio book because David is the reader.

If you only have time for a little bit, check out 6 To 8 Black Men - [https://www.youtube.com/watch?v=hPfg20k5TE8](https://www.youtube.com/watch?v=hPfg20k5TE8)

<comment><USER5> My favorite David Sedaris story is how he picked up so much litter in his city the local council named a garbage truck after him and apparently had no idea he was famous until after they published an article about it.

[https://kottke.org/14/10/three-cheers-for-pig-pen- sedaris](https://kottke.org/14/10/three-cheers-for-pig-pen-sedaris)

</comment></comment><comment><USER6> I hope I am still able to joke. The older folks in my life seem to manage some equinanimity about their situation, even though to me it seems less than ideal.

<comment><USER7> When I was younger mortality seemed like a far off concern, and the equanimity with which my parents and grandparents faced aging was a great example. Now I'm older and have children of my own, I can more clearly see the responsibility that comes with that. They deserve better than having to deal with a parent that's consumed by bitterness and disappointment about lost opportunities and the transitory nature of life.

</comment></comment><comment><USER8> I stopped reading when the author started talking about Trump. I swear, for people who hate Trump, they sure dedicate a lot of brain cycles to constantly thinking about him...

<comment><USER9> I thought it seemed out if place. And then I saw the name 'Hugh', at which point I realized the author was David Sedaris. (He writes intimately about his family quite a bit.) It's a entirely in line with his style of humor.

</comment></comment><comment><USER10> It's More responsible</comment>


Ask HN: Are cybersecurity professionals the new privateers? - <AUTHOR>

The recent thread on HN about the U.S. Navy advertising for zero days, along with stories about Kremlin-funded trolls and government-adjacent hacking groups, has me thinking more and more about the role of non-state actors in the world of international cybercrime and espionage.
Although it's all semantic, it seems like in the scramble for technical talent, governments aren't just contracting with third-party companies anymore, they're actually beginning to approach individuals, or (as in the Navy's case) openly solicit for offensive software or exploits from whoever's capable of providing them.
It also seems like there's a growing willingness in  countries like Russia that openly defy international law to informally sanction state-sponsored cybercrime ("We don't care who you target, as long as they're foreign"). Then there's the shell game of plausible deniability that countries like China get from using non-state outfits that they can then distance themselves from.
I guess that's the "privateer" part that interests me so much and distinguishes these phenomena from just basic HR. Countries seem to be openly embracing the possibility for talented amateurs to unilaterally prey upon the enemies of the state.
What do you think HN? For citizens of the world, do you see evidence of your country supporting this model of cybersecurity / operations? Is this a growing dynamic, or just the result of a critical infosec talent shortage? <comment><USER2> I don't see that anything has changed for states in the cybersecurity space. Third-party companies are equivalent to individuals. Governments have always had proxy companies for cybersecurity as well.</comment>


The Flex Company (YC S16) Makes Periods Painless - <AUTHOR> http://themacro.com/articles/2016/08/the-flex-company/ <comment><USER2> Hi, I'm Lauren the founder & ceo of The Flex Company. Women have gone almost 100 years with no real innovation. Tampons are old hardware (if you can even call them that at all). I know there are a lot of men here, and I'd love for you guys to jump in the discussion. Happy to answer any questions you have. P.S. if you know someone who'd like to try it, head to our website for a free sample. flexfits.com</comment>


Klatu the Household Robot (1977) - <AUTHOR> http://cyberneticzoo.com/robots/1977-klatu-the-household-android-quasar-industries-american/ <comment><USER2> When I was a wee lad, I would read about robots like this in library books (which I apparently cannot successfully Google.) I remember seeing pictures of this specific one, and others[0]. Robots were kind of a thing in the late 70s and early 80s apparently.

One I've always liked was Westinghouse's Electro[1]. It smoked cigarettes because of course it did, and looked and acted _exactly_ the way you would imagine an old-school sci fi robot would, and even had a primitive (and a bit deceptive) system to respond to "voice commands" [2].

AROK[3,4] was also really cool. That is what a robot is supposed to look like.

That, or a sexy catgirl maid... but I digress.

Certainly _not_ like an anorexic dalek [5,6].

It seems that as technology progresses, design homogenizes. If we do ever get to general purpose humanoid or semihumanoid robots, they'll probably be black rectangles like everything else. I still kind of want the blinkenlights and brushed steel of the future past, though.

[0][https://www.pocket- lint.com/gadgets/news/147374-best-1980s-r...](https://www.pocket- lint.com/gadgets/news/147374-best-1980s-robots)

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

[2][https://spectrum.ieee.org/tech-history/dawn-of- electronics/e...](https://spectrum.ieee.org/tech-history/dawn-of- electronics/elektro-the-motoman-had-the-biggest-brain-at-the-1939-worlds-fair)

[3][http://cyberneticzoo.com/robots/1975-arok-ben-skora- american...](http://cyberneticzoo.com/robots/1975-arok-ben-skora-american/)

[4][http://www.theoldrobots.com/arok.html](http://www.theoldrobots.com/arok.html)

[5][https://www.badger-technologies.com/](https://www.badger- technologies.com/)

[6][https://news.ycombinator.com/item?id=20183303](https://news.ycombinator.com/item?id=20183303)

</comment><comment> crooked-v The operative quote:

> I used to work for Tony Reichelt "Klatu". He was a lovable con-man – who > really did love robots. We built a whole bunch of 'em, but they were totally > person operated (with the exception of some that were "chucky Cheese" type > bots.) They were not pieces of crap either – they were high end wireless, > aircraft aluminum framed, with custom fiberglass bodies by a 'vette shop. > Tony was a blast and a half – I've often wondered what happened to him.

</comment><comment><AUTHOR> I actually came across this by reading about it in Where the Wizards Stay Up Late. The release of Klatu set off a debate on Arpanet mail lists over what can and can't be said using the government-sponsored Arpanet.

[https://www.washingtonpost.com/archive/lifestyle/magazine/19...](https://www.washingtonpost.com/archive/lifestyle/magazine/1996/08/04/talking- headers/41be42fa-d4ff-4c7b-9490-3ab441644886/?utm_term=.9d798497e306)

</comment><comment><USER3> Totally unrelated, but this reminded me of a headline I read in the '70's proclaiming that the Beatles had made a new album using the band name "Klaatu". [https://en.wikipedia.org/wiki/Klaatu_(band)](https://en.wikipedia.org/wiki/Klaatu_\(band\))

<comment><USER4> "Klaatu" is also a reference to the movie "The Day the Earth Stood Still".

</comment></comment><comment><USER5> Scrolling to the fifth image was a a shock!

</comment><comment><USER6> Very cool!</comment>


Ask HN: Have you ever been granted profits interest units? How to evaluate them? - <AUTHOR> I have an offer from a fairly young tech startup as a software engineer. The startup is an LLC. They have granted me "profits interest units" instead of stock options or RSUs. All they have told me is that you have N units of profits interest in the company. They won't disclose a percentage number as to what this represents as a percentage of the total "profits interest units".<p>HN has a lot of discussions around evaluation stock options, but I haven't seen any on "profits interest units". Have you ever been granted profits interest units? How to evaluate them? <comment><USER2> To fairly evaluate the value of these things, the company would need to provide you with additional data. E.g. if this were a public company you'd want to know the total number of these units, and how profit would be split between these units and other things (dividends, reinvesting profit in the business, options for senior executives, etc).

You'd also want to look over the financials of the company from a few annual reports to get a feel for if this company was likely to even have any profit.

Since this is a young startup and they are not willing to disclose information that would let you estimate fair value of these units, regard them as having zero value.

Make sure you get paid in enough cash + bonuses with contractually agreed conditions (Non discretionary) + benefits for the total comp to be competitive with other options available to you.

you could suggest in negotiations that the profit sharing units allocated to you vest over a number of years so they could serve as a tool for retaining your services and aligning your interests with the business in the long term, but not as a factor in evaluating your compensation package.

(you don't have to point out it will be an ineffective tool if there is no profit/the units are constructed to be otherwise worthless)

<comment><USER2> More entertaining idea: instead of agreeing to work e.g. 40 hours a week you could instead propose to sell them 100 labour sharing units in exchange for cash + profit sharing units, whereby each labour sharing unit entitled the company to some fraction of your annual labour output.

You would need a compelling and charismatic argument to distract from the fact that you don't disclose information that allows the value of a labour unit to be estimated.

</comment></comment><comment><USER3> Never heard of those. I wouldn't trust profit. It's way too easy for a company, especially a growing one, to spend a little extra which lowers the profit (and thus payout to employees, but also less corporate tax). You also risk emotional blackmail (maybe the word is too strong): founders telling you by paying out those profits interest units you're lowing the profit for others.

[http://www.ibtimes.com/amazon-nearly-20-years-business-it- st...](http://www.ibtimes.com/amazon-nearly-20-years-business-it-still-doesnt- make-money-investors-dont-seem-care-1513368)

</comment><comment><USER4> I was granted 5% profit in an early startup. There never was any profit. Big surprise

<comment><USER5> Having been offered a profit interest, my lawyer made it very clear that I should not expect a dime from that interest. Why? Well the company could choose to spend until there are no profits. In my case, there was a history of nepotism by the controlling party and the assumption was that everyone remotely related would soon work for the company. At that point, it was easy to turn down the offer.</comment></comment>