H-1B Willful Violator List of Employers - <AUTHOR> https://www.dol.gov/whd/immigration/H1Bwillfulviolator.htm <comment><USER2> A lot of consultancy firms abuse this system, BUT: not all H1Bs are "cheap labor". If you are not American and want to work in a tech company in the US, you don't have much choice: 99% of the time, you have to get an H-1B.

I once got a position in a very interesting startup in Palo Alto (with a salary significantly above average in the region), and the company was thrilled to have me join them (because there really is a shortage of candidates in my field)... until we learned that I didn't get my H-1B.

It's a lottery, the most stupid way to pick who gets to enter you country. American tech companies are so frustrated with this system that they often build offices in Europe just to be able to recruit local talent. Many companies moved to Canada because the immigration law is more flexible there.

It baffles me that some people believe most non-American employees are just "cheap labor". There are smart people on the other side of the pond as well!

<comment><USER3> >It baffles me that some people believe most non-American employees are just "cheap labor".

It is not a "belief" because they are cheaper. Everytime this topic comes up, a bunch of Ph.D's are shocked, SHOCKED! to learn that there are companies abusing the system and to learn that Infosys, Wipro and Tata are the leading H1-B Sponsors with an average salary of ~$73,000

[http://www.myvisajobs.com/Reports/2015-H1B-Visa- Sponsor.aspx](http://www.myvisajobs.com/Reports/2015-H1B-Visa-Sponsor.aspx)

<comment><USER4> I have worked at one of the above mentioned companies and I have seen that A LOT of people would be interested in getting to work here at ~73000, which might be lesser than average but works fine for them.

Also, they probably have several other considerations in this matter: \- Get the work experience of working in a different country at a client location that means more responsibility, more learning, etc. \- Get the option to travel and explore another country, and the job salary covers for the expenses.

Now, usually, the role and responsibilities are that of a technical or functional consultant. But they are not an individual employed directly by the US company. Their employer, one of the above mentioned companies or one of the several ones out there, is contracted.

Note that I haven't worked here in US at any company while being an employee of a consultancy.

 _I believe_ that the US based company where the individual works might be charged at a higher hourly rate but only a certain percentage of it makes to the employee and thus they may have lesser salaries. I would love to have this belief clarified, if anyone has any input.

All that being said, I agree that the abuse of H1-B sucks. Though it is all too common outside the bay area. Haven't come across any instances here yet.

<comment><USER5> Hah! Abuse of the H-1B program is endemic across the United States--not just in the Bay Area. No large city is excluded.

</comment></comment></comment></comment><comment><USER6> None of the largest body shops being present on the list is sad. The H-1B program is all too clearly abused by large "consulting" firms to drive down wages and mistreat visa holding employees under the threat of deportation.

<comment><USER7> I've often wondered - I know there are requirements for them to "post" those openings before they get the visa - if there is a way for "concerned citizens" to challenge them through the department of labor or something... we could make a website that would let professional engineers volunteer their spare time go down the list of WiPro's (or whatever the big offender companies are) visa requests and call BS on them.

<comment><USER8> They just have to post it at their place of business, so the public wouldn't have access to them. This is unlike the EB3 process where a job posting has to be made public as part of PERM.

<comment><USER7> Actually, you're wrong according to: [https://www.dol.gov/whd/regs/compliance/FactSheet62/whdfs62O...](https://www.dol.gov/whd/regs/compliance/FactSheet62/whdfs62O.htm) for "H1-B Dependent Employers"

"Such employers must take good faith steps to recruit U.S. workers for any job for which they seek H-1B workers."

<comment><USER8> From your own link:

> Either external _or internal_ to the employer's workforce; or

So no, no public posting is required. It could all be internal recruiting and still pass the bar for H1-B. "Good faith" is also a very broad definition so it wouldn't surprise me that a very minimum amount of work is considered within the scope of that.

</comment></comment></comment></comment></comment><comment><USER9> I can't believe in this day and age that anyone is arguing H1Bs aren't a means to get access to cheap labor. If you've ever worked with any sort of international company, you'll get connected to their "IT Team" which usually has some tech sound name like cognizant etc. They are super heavily accented, very eager to please, often poorly skilled and are paid far less than any native born person.

If you deny this exists, you don't work in the tech sector. What is this then, if not companies trying to maximize profits by exploiting foreign born workers? It's just mind blowing we keep going over this again and again when the reality is clear as day. The only logical conclusion of importing large amounts of lower skilled workers with poor language skills is that they are cheaper.

<comment><USER10> > I can't believe in this day and age that anyone is arguing H1Bs aren't a > means to get access to cheap labor. ...If you deny this exists, you don't > work in the tech sector.

Believe me. I work in the tech sector and I find H-1Bs cost us a lot more, and always have (~25 years of reluctantly hiring H-1B folks from time to time).

There's a ton of paperwork that takes time and costs money and it delays hiring the person. You also have to pay more than the "prevailing wage" which is hardly a burden since I'm already going through all the hassle -- because it's someone we can't find any other way so we're already planning on paying them more. We resort to it when we can't find someone local, which mean we start this slow process after already spending time trying to find someone.

I don't see any problem with this burden BTW (I mean I would like it to be more convenient of course, but the idea that there is a bit of "trade barrier" to bringing in someone from outside rather than hiring a local doesn't seem like a terrible thing). And I'm an immigrant myself.

YES I understand there are H-1B sweatshops bringing in low-paid, not really qualified drudges. They are a problem and they game the system in numerous bad ways (including sucking up all the H-1s making it harder for startups to bring in exceptional people).

But they are two disjoint problems -- the basic idea of H-1 is a good one.

<comment><USER9> The way you are intending to use H1Bs is appropriate and fine. The way it is actually used is very different. It's mostly used by large spaghetti code factories that over promise and under deliver, pocketing the difference. I am not proud that my country imports foreign workers and works them to death, nor is it okay that they are taking jobs actual Americans can do.

If a system has a good basic idea but is flawed in practice, we should abolish it, no? At the moment, no one is properly served by the H1B lottery except these outsourcing firms.

<comment><USER10> There are people we can't get without it. How would you replace or reform it to end abuse?

BTW I don't believe my experience is atypical.

</comment></comment></comment></comment><comment><USER11> There are many Indian consulting/vendor shops out there that flout many H1B rules. 1. They take H1B filing fee from employee. 2. They keep you on bench. if you have no job, the consulting firm will run a dummy payroll for you to maintain legal visa status and you have to pay back payroll taxes to them to make up for their loss. 3. Most of the time they will not have a job before hand as required by H1B programme. They will hire some one, keep them on payroll(point 2 above) and then start the search for a contractor work from their clients.

There is lot of fraud going on there. I would say about 50% of H1B visas go to these scams. Ask any Indians working on big companies and they can explain you the bigger picture. Its pathetic that DHS/USCIS are unaware of these widespread scams.

<comment><USER12> Here is the big picture.

Path 1 - worker outside US.

      1. Worker outside US gets in touch with body shops in US.
      2. The body shops forces the worker to fake their work  experience, take money and apply H1B.
      3. If it gets thru lottery,the worker lands in US.
      4. The body shop provides cheap accommodation for the worker.
      5. The body shop runs fake payrolls.
      6. The workers finds a contract job by faking skills and doing proxy interviews, lip syncs on video interview calls.
      7. Gets the contract job.
      8. Gets fired when the employer realises that the worker is fake.
      9. Goto step 5.
     10. In parallel , the body shop will start GC process and the fake worker becomes Green Card holder and finally a citizen.

Path 2 - Foreign students comes for MS in US

      1. Many students comes to US to do master's degree after their bachelors.
       (especially people from a particular state from India,I do not want to mention the state)
      2. Finishes masters ( 2 years ). Gets an OPT work permit for 2 years.
      3. The body shops recruit these students with nil experience.
      4. Fake up their work experience to say 5 - 6 years.
      5. Runs fake payroll when they are job hunting.
      6. Send these students to work as a contractor and applies H1B for them. Since they have an MS degree , the odds are high for them to get selected in the lottery.
      7. These fake workers outsource their office job to India at night and get it done from an experienced worker for a small amount.
      8. At some point , the employer understands the worker is fake,fires the contractor.
      9. Goto step 5.
      10. In parallel,the body shop will apply for GC in EB2 category and the fake workers becomes a Green card holder within 7 years and eventually a citizen.

</comment></comment><comment><USER13> Or, a list of those who couldn't afford the right lawyers.

<comment><USER14> I recommend Cohen & Grigsby.

They'll be happy to show you exactly how to run fake job ads locally in order to exclude American workers, then they'll show you how to use the various loopholes to get around what flimsy regulations exist, in order to get yourself a bunch of low wage immigrant employees who live in fear of losing their job and being sent back home.

See for yourself here: [https://www.youtube.com/watch?v=TCbFEgFajGU](https://www.youtube.com/watch?v=TCbFEgFajGU)

</comment></comment><comment><USER15> I didn't see Tata, Infosys, Disney, or Edison Electric anywhere on that list. Did I miss something?

<comment><USER16> Yeah, you missed that rich and powerful are not really required to face consequences of their actions.

<comment><USER17> We'll see. Two of the victims from Disney's fiasco last year just filled a law suit - [http://www.orlandosentinel.com/business/os- disney-h1b-visa-l...](http://www.orlandosentinel.com/business/os- disney-h1b-visa-lawsuit-20160125-story.html)

Hopefully the outcome from this lawsuit will hurt more then a flick on the nose...

</comment></comment></comment><comment><USER18> The obvious problem here is that the real beneficiaries of H1B abuse are companies our parents have heard of, but the named violators are the 1099 body shops they source from, who nobody has heard of.

<comment><USER19> Good point.

I was always thinking about how bodyshops benefits from Microsoft/Google/etc. lobbying in favor of H1b.

But you are right - bodyshops return the favor back to these tech giants by placing these contractors there.

</comment></comment><comment><USER20> There is another problem that is eating away at the salary numbers of H1Bs its called full time Curriculum Practical Training(CPT). Basically it was intended to be a internship for students on an F-1(student) visa. Now many universities have "Full time CPT[1]" that allows students to work 12 months at a time. This itself is legal[2]. But I have seen many universities are gaming the system like:[3]. Often times no real classes but only "training" is offered for real work preparation. Enrollment bars are pretty low and there is no easy way to determine how big this problem is.

[1] [http://international.syr.edu/current-students/employment- ssn...](http://international.syr.edu/current-students/employment- ssn/curricular-practical-training.html) [2] [https://www.uscis.gov/i-9-central/complete-correct- form-i-9/...](https://www.uscis.gov/i-9-central/complete-correct- form-i-9/complete-section-1-employee-information-and-verification/foreign- students) [3] [http://www.nytimes.com/2016/04/06/nyregion/new-jersey- univer...](http://www.nytimes.com/2016/04/06/nyregion/new-jersey-university- was-fake-but-visa-fraud-arrests-are-real.html)

</comment><comment><USER21> This seems like an exceedingly small list

<comment><USER22> Yes extremely short. And why all those East Asian names?

</comment></comment><comment><USER23> I worked in a US Embassy consular section as a summer hire working with H1B visas. Part of my job was to check that the companies were real. I was amazed how many were fraudulent, even companies where we already had the DHS paperwork to issue the visa. When I say fraudulent, I mean the addresses and phone numbers for the company simply did not belong to any company. They were incredibly transparent fronts for illegal immigration.

</comment><comment><USER24> "Prince George's County Public Schools"

Interesting to find one public school system on the list, out of the entire country (not that I had any expectations on who should be on the list, just that 1 school system out of 13K school districts in the entire country)

<comment><USER25> PG County school district shares a border with Washington, DC, which may be a reason why it got caught and other schools haven't yet. By that I mean, other schools may in fact be in violation, but investigators (who are likely in DC) heard about the practices going on right next door.

<comment><USER26> Looks like this was the reason for the 2011 violation:

[http://www.today.com/id/44708445/ns/today- today_news/t/forei...](http://www.today.com/id/44708445/ns/today- today_news/t/foreign-teachers-american-dreams-vanish-flash/)

with the court ruling of:

[http://h1blegalrights.com/2011/07/md-countys-public- schools-...](http://h1blegalrights.com/2011/07/md-countys-public-schools- barred-from-h-1b-program-and-fined-for-wage-violations/)

</comment></comment></comment><comment><USER27> The H1B visa requires a minimum pay as it is right now. However, what some companies do when they sponsor a foreign worker for H1B is to hire the person part time on paper and thus being able to pay a lower wage, but still in practice requiring him or her to work full time. This is an anecdote I heard but I know it occurs. For many people, having the chance to come to the U.S. is like winning the lottery, and they will not report their employer.

<comment><USER28> They do have a prevailing wage clause but if you look up labor filings by most tech companies the wages are on average MUCH lower than what Americans would expect. I just saw a software developer petition for a company in San Francisco for 79K.

<comment><USER29> Though it does not take RSUs into account, and in the SF/SV a huge chunk of the compensation tend to come in the form of RSUs.

<comment><USER28> This was for a small startup which is not public. Even with options, 79K is not prevailing wage in SF for a developer.

</comment></comment></comment></comment><comment><USER30> I see one from my home state of Iowa. Worldwide Software Services, Inc. As a proud native-born, raised and college educated Iowan that had to leave to Chicago and Austin to find work, I will taking extra time to harass and shame them. Companies like this are part of the reason why we can't find jobs and have to migrate like cattle for them.

A good example where mob rule will be a good thing. I have my pitchfork ready.

Thank you for this link.

<comment><USER31> Why can't you live off of the same salary as the 'cheap' workers? Sounds to me that you think you are entitled to something...

<comment><USER30> Are you entitled to jobs in my country? Get a job whatever 3rd world wasteland you're from. Yes I am entitled to jobs in my own country.

</comment></comment></comment><comment><USER32> If this is the list then I would say DoJ is not doing a good job. The level of H1B corruption in USA is lot more than the level of corruption in Government offices in India. Here are some malpractices I have observed in consultancies:

1\. Employers takes money from an individual to file H1B. Charges are typically $4k. 2\. Employer runs a fake payroll pays peanuts to the employee while showing a bug salary on paper. 3\. Consultancy creates fake resume of its employees and the real work is then done by someone sitting in India. For example Consultancy hires Ms. X on H1B with no work experience. Ms X then works as consultant for an large E-Commerce giant through this consultancy through a fake resume that shows that she has 7 years of experience. Ms X cant code so she calls up a India office of the consultancy who do all the work sometimes even by screen sharing. 4\. Hiring managers of large companies are bribed to discriminate against normal Americans and hire these H1Bs through consultancies. 5\. Ms x working for consultancy X gets a call from a large company in bay area for interview. Ms Y goes and answers and clears the interview but Ms X joins as employee. In fact answering interview for others is what Ms Y does full time. 6\. For telephonic interview many of these consultancies have setup complex systems where Ms Y answers the interiview on Skype but she has a teleprompter in front of her.

Fake H1B:

A lot of these consultancies employ people on H4,F1 or any other visa by telling their customers that these people have H1B. I suspect the large giant companies in bay area already know all this but it works on either don't as or don't tell basis or the hiring managers are bribed.

What I find most upsetting is that the media, overall tech industry does not discuss this at all.

</comment><comment><USER33> And what does this Wall of Shame actually do? Shouldn't the Department of Labor be able to fine them or something rather than just publishing their names?

<comment><USER34> It might be as a way to alert possible future employees.

<comment><USER35> Yes, the H1B prospects will no doubt use their incredible market position and bargaining power to avoid these employers.

</comment></comment></comment><comment><USER36> It seems that opposition to H-1Bs is pretty widespread here. Do most people of this position also support deportation of illegal immigrants, and efforts to curtail illegal immigration? If not, why not? Genuinely interested in learning how those positions are compatible.

<comment><USER37> I think given Tata, Infosys, Disney and Edison electric's behaviour is plenty of reason for people to be critical of how we have setup H-1B. Illegal immigration is illegal so that is a purely indefensible position to have to be in support of illegal immigration. We have democracy and laws such as H-1B which allow us to bring people into the country on our terms (laws which require scrutiny from time to time). Any migration reform should be done through legislation not willful ignorance of the laws. Otherwise what use is the state if they cannot even do what they say they are going to do?

<comment><USER36> I didn't expect anyone to be in favour of illegal immigration - what I'm asking about are efforts to curtail illegal immigration and deport existing illegal immigrants? To the extends that laws around H1Bs aren't working, surely the laws around illegal immigration are working even poorer? The population of illegal immigrants is many time higher than the population of H1Bs.

<comment><USER14> The forces that support the broken and easily abusable H1B system are the same forces that support illegal immigration: the large, entrenched business and banking interests who want to keep wages low (and thus keep their profits high). These forces spend a lot of money lobbying the government to do nothing to curtail illegal immigration, fix the visa system, or punish the abusers.

I'm not sure if you're expecting to get a reply that encapsulates all of HN's users position on this, but probably the reason that you see more H1B talk here is because this site caters to people in the tech industry - affected by H1B's more than the industries that are more affected by illegal immigrants from Mexico.

</comment></comment></comment></comment><comment><USER38> Disney is not on the list?

<comment><USER39> maybe they don't directly employee the H1b holder instead going through a consulting shop.

<comment><USER40> As a former employee of Disney, I can confirm that this is correct. Disney IT goes through firms such as HCL and Cognizant who act as the H1-B sponsors. I'm aware of a very small number of examples where Disney sponsored H1-B visas directly, but those folks worked outside of IT and they did not displace any existing employees.

</comment></comment></comment><comment><USER41> An obvious solution to this I've heard of before is to make the minimum salary for H-1B workers to be very high. Over six figures. If the talent is really so rare and difficult that you can't get it in the US, surely that talent is worth spending more money on. Any reason this would be unfair?

<comment><USER42> Why not "auction" them? Ie, allocate them to the positions companies are willing to pay the most for in descending order.

You'd have to require that the company keep that salary in place for some number of years to prevent abuse, but that seems reasonable enough.

<comment><USER43> How far down does "descending" go? It'd be a race to the bottom.

</comment></comment></comment><comment><USER44> Something is wrong with this list.... Where's Facebook, Google, Disney, Microsoft, and all of the other major corporations that have systematically undermined and cheated the American workforce by importing cheap labor, and then laying off the fully qualified, educated, and trained Americans?

<comment><USER45> Don't know about Disney, but the tech companies pay exactly the same for hires at the same level regardless of where they are originally from.

H1B may have the benefit of being somewhat _bonded_ labor for them, but its not cheap.

<comment><USER14> It also, in aggregate, has the effect of lowering, or preventing increases in, wages in the larger labor market.

</comment></comment></comment><comment><USER46> Mmmh, not being familiar with US immigration laws, I'm not sure I get everything. Is this about companies who illegally "import" foreign workers when they could have recruited US citizens ?

<comment><USER47> [https://www.dol.gov/whd/regs/compliance/FactSheet62/whdfs62S...](https://www.dol.gov/whd/regs/compliance/FactSheet62/whdfs62S.htm)

</comment></comment><comment><USER48> No Disney or Tata?

</comment><comment><USER49> I've a better list [http://sammyboy.com/showthread.php?98021-Companies-ruined- or...](http://sammyboy.com/showthread.php?98021-Companies-ruined-or-almost- ruined-by-imported-Indian-labor-%28US%29)

</comment><comment><USER31> Why does that website look like it's straight out of 1995? It's a government website, isn't it? Shouldn't it look more modern and professional?

</comment><comment><USER50> I think if you use H-1B for your company you should be denied from using any tax breaks when filing US taxes.

<comment><USER51> The US is a nation of immigrants. As it stands now, H1-B is one of the few paths for technically-educated people to get lawful work and eventual permanent residence and citizenship in the US.

I don't think there's anything wrong with sponsoring an H1-B for a talented and qualified person who wants to live in the US. There's room, and there are jobs, and complaining about immigrants is just stupid.

That said, the H1-B gives companies way too much leverage over their workers. In a "restructuring" of my former employer (aka entering the drain-spiral) , the NYC office was closed and most people were offered the "opportunity" to relocate to Sacramento, or take severance. Not a single person relocated.... except the lone H1-B, who had a new baby and didn't feel like he had any choice because he could lose his visa otherwise. That kind of coercive force is a sign of a broken power dynamic, due to a broken law.

<comment><USER52> An H1-B is _not_ a path to permanent residence. Having an H1-B does not help in any way with getting a green card. If you apply through employment the sponsoring company does not get any fee reduction, the application is not processed any faster. This is a completely independent petition.

The only way you could say an H1B is a path to immigration is for the case where a non-immigrant meets a spouse and get a green card through marriage. That's what happened to me, but this is really just by accident. Someone under a student visa could experience the same outcome for example.

You sait it yourself, the power of companies over H1Bs is overwhelming. Upon termination, an H1B has to leave the country in the following 24 hours, there is no "grace period" even though it's a widespread myth.

<comment><USER53> It's not a path in the most pedantic term, but if I were born in China or India, the usual path is

1\. do masters in the US

2\. work on OPT until I am fortunate enough to be picked in H1B lottery, or until my OPT runs out, whichever comes first

3\. IF I get picked in H1B lottery, apply for PR

4\. wait 4-8 years for my category to be current

5\. eventually get PR

short of an investor visa, marrying someone who is a citizen, qualifying for EB1, or applying from abroad and waiting 10 years, how else do I get a green card?

<comment><USER54> More like 8-12 years, if you switch a job without getting a I-140 approved and 12+, if you switch jobs and GC process gets reset for each job change.

</comment></comment></comment></comment></comment><comment><USER55> Link seems to be down?

</comment><comment><USER56> I see a lot of general anger against H-1B visas, so hear me out. There are broadly two kinds of Indians who work in the US legally (I will come to the illegal part later) under H-1B visas.

[1] The first is typically graduates from elite Indian engineering institutions (Indian Institutes of Technology, or a few other institutes) who have either gotten a job offer from a US firm for their US office straight out of college, or have come to the US for graduate school and are now entering the workforce. These are, in an overwhelming majority of cases, NOT cheap labour. They are hired at market rate (sometimes even higher, because they typically have strong profiles), they compete with the rest of the student and larger labour pool and get these jobs based purely on merit. For reference, I have plenty of friends who are in this category (I am too), and all of us get paid competitive market salaries. We are also not beholden to any firm and are pretty free to switch jobs if we desire. A lot of us have paid for graduate school in the US too, so it's not like we are just somehow freeriding. This is the kind of crowd you typically encouter in the Bay Area.

[2] The second category typically consists of people who don't have a stellar educational background, and are mostly hired in India by companies like Infosys, TCS, Wipro et al. for typically very low salaries (say 1/4th or 1/3rd of what a Googler would get in India). They mostly work on outsourced projects that come from other companies (both in India and outside). Often, these workers are then transfered to the US, where they work as vendors for companies such as Microsoft. They are technically employees of TCS or Wipro or whatever (which have branches in the US), and are on the payroll of these companies, but work for companies like Microsoft. This pool of workers is indeed cheap labor for the big cos because they can a) skimp on stuff such as insurance costs b) typically have to pay less anyway c) the low salary is still pretty high compared to what the worker would have otherwise been able to command in India, d) the worker has relatively lower job mobility because their resumes are probably not as 'employable' as Category [1]

Like it or not, [2] far outnumbers [1]. I don't remember the link right now, but these companies apply for in the order of 1000 H-1B visas every year. Most startups etc, for example, apply for a few or in the order of tens at best.

The illegal bit is of course what a few other commenters wrote—there are these 'consulting firms' which will apply for H-1B on your behalf (you pay them $5K or whatever). If you get through the lottery, you can now move to the US on H-1B. You don't have an actual job though you are on the consulting firm's payroll. You then transfer money to them under the table, which they pay back to you as 'salary' because you are on their payroll after all. In the meanwhile, they try to find a job for you. If they can find a job you will then work wherever they set you up and they take a cut of your salary. This is typically done by people who want to accompany their spouses to the US but don't want to be on H-4 visas which don't let you work.

</comment><comment><USER57> On a related note, the FBI recently uncovered a $20m H1B fraud operations [http://www.computerworld.com/article/3064712/h1b/us- uncovers...](http://www.computerworld.com/article/3064712/h1b/us- uncovers-20m-h-1b-fraud-scheme.html)</comment>


The WireWorld Computer - <AUTHOR> http://www.quinapalus.com/wi-index.html

<comment><AUTHOR> For me this computer provided one of those rare aha! moments. I finally got what all the fuss about Cellular Automata (CA) and Conway's 'Game of Life' (GoL) is all about. I'm aware that the GoL has been proved to be Turing Complete too, but then in the case of WireWorld CA, _seeing is believing_.

It is said _"a picture is worth a thousand words"_ , in this case, a picture [1] is worth a tome [2].

[1] <http://www.quinapalus.com/wires11.html>

[2] <http://www.wolframscience.com/thebook.html>

(psst...NKS copies are available for $1-2 and are excellent bed risers! ;)

</comment><comment><USER2> I really think there are some really powerful applications for this going forward. Building computation/logical rules into the materials to organically create complex structures might be one way to achieve goals synthetic approaches cannot. Reminds me of Saul Griffith's talk at TED: [http://www.ted.com/talks/saul_griffith_on_everyday_invention...](http://www.ted.com/talks/saul_griffith_on_everyday_inventions.html)

</comment><comment><USER3> The style of logic used here resembles quantum dot cellular automata:

<http://en.wikipedia.org/wiki/Quantum_dot_cellular_automaton></comment>


Learning to Read X86 Assembly Language - <AUTHOR> http://patshaughnessy.net/2016/11/26/learning-to-read-x86-assembly-language <comment><AUTHOR> Also Matt Godbolt's gcc explorer is the the bee's knees for understanding assembly

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

I think that playing around with it for 2 hours will teach you more than most classes on the topic. It really drives home why interactivity is such a bit deal in education.

You should also try writing a script for counting instructions in binaries. It's pretty illuminating. Here are some sample statistics [https://webcache.googleusercontent.com/search?q=cache:j0gebK...](https://webcache.googleusercontent.com/search?q=cache:j0gebKGwf5YJ:https://www.strchr.com/x86_machine_code_statistics+&cd=1&hl=en&ct=clnk&gl=us)

<comment><USER5> This is amazing. After a few minutes I learned so much already - try with an empty function that returns 0, then return an argument, then return an argument +1, argument^2, etc.

As an aside, I was looking at the header code generated by gcc to handle the initial function call. What's the convention on how we assign parameters to registers? I'm trying stuff out, and the first paramter always seems to be edi, then esi, eax. Except when I change the types, and it turns into xmm0 and the like. And the result returned is eax too, except when it's a float, then it's xmm0. How do things know where to look?

<comment><AUTHOR> > How do things know where to look?

The compiler generates code that uses the correct register. So the compiler picks a register into which it will put the result and then generates code after the calling location that gets the result from the correct register.

And yeah, there's quite a bit of surprises. E.g. I found out that gcc is smart enough to perform tail call optimizations [https://godbolt.org/g/MZDmwP](https://godbolt.org/g/MZDmwP)

<comment><USER5> OK, so it's not a magical convention - it works it out bottom-up. First decide on registers for each parameter when you generate the code for the function, then based on that generate specific code for the instances where you call that function. Cool, thank you.

Also that example, heh. I tried to go back gcc versions to see if there was a case where it didn't do TCO - nope. Also, I like how returning 0 is "xor eax, eax".

<comment><USER6> Suppose you're right and the registers are arbitrary. Then how would foreign function calls work? If you're compiling Rust code that calls into a C library, how does it know what registers to use?

So the choice of registers cannot be arbitrary, unless the compiler knows the function is only used within an object file.

The registers are predetermined by a convention unless you use the 'static' keyword to signal that the function is only used internally to a module, so the compiler has complete freedom to choose registers.

<comment><USER7> _Then how would foreign function calls work? If you 're compiling Rust code that calls into a C library, how does it know what registers to use?_

By using information kept with the function, or perhaps even encoded into the function name itself (as already happens when distinguishing between different calling conventions, or in the case of C++ name mangling)?

Coming from an Asm background, where there basically is no one "calling convention", and programmers would document which registers (almost always registers, rarely the stack --- and that can make for some great efficiency gains) are for what, I've always wondered why that idea didn't seem to go far.

<comment><USER8> > By using information kept with the function

How would you do that with dynamically linked code, inspect functions you're calling at runtime before laying out your arguments?

> perhaps even encoded into the function name itself

That would mean name mangling in C and assembly.

> Coming from an Asm background, where there basically is no one "calling > convention"

Right, because you can lay out memory however you want since you're at the assembly level. Higher-level code (C up) can't do that, so instead you've got standard calling conventions for inter-library call (inside a compilation unit, the compiler is free to use alternate calling conventions since it has complete control over both sides of the callsite, that's also how it can inline calls entirely).

> programmers would document which registers (almost always registers, rarely > the stack --- and that can make for some great efficiency gains)

Some standard CC (though not the old CDECL) also use registers, so far as they can, depending on the arch. The SystemV AMD64 ABI uses 6 x86_64 registers for integer/pointer arguments and 8 SSE registers for FP arguments, with the rest on the stack.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> _What a train wreck! It's hard to imagine a more confusing state of affairs._

I'd say that's more attributed to someone many many years ago deciding they would not follow the official Intel syntax (for what reason I do not know), and somehow convincing the rest of the community to follow them. That's actually one of the things that could make for a very interesting article: how one processor family got two different and incompatible Asm syntaxes. The fact that the mnemonics and syntax don't correspond to those found in the manufacturer's datasheets and manuals just increases the barrier to understanding. As far as I know, the same didn't happen to ARM, MIPS, SPARC, and the others. Especially when the sense of the comparisons/conditional jumps is reversed, and some of the more advanced addressing modes look less-than- obvious, it's hard to imagine why anyone would adopt such a syntax:

[http://x86asm.net/articles/what-i-dislike-about- gas/](http://x86asm.net/articles/what-i-dislike-about-gas/)

Note that the GNU tools have option to use Intel syntax too, so you can avoid some of the confusion (in the DOS/Windows and embedded world at least until recently, Intel syntax is overwhelmingly the norm.)

<comment><USER9> This. The AT&T syntax for x86 thing is a huge mistake. All the official docs are Intel syntax. Intel syntax is easier to read and write. Half the gotchas in this article are problems that don't exist in Intel syntax, like the instruction suffixes. The instruction suffixes get even weirder when you get to the sign extending instructions. I wrote an article about this here: [http://blog.reverberate.org/2009/07/giving-up-on-at-style- as...](http://blog.reverberate.org/2009/07/giving-up-on-at-style-assembler- syntax.html)

<comment><USER10> _The AT &T syntax for x86 thing is a huge mistake._

For someone who grew up on normal processors (MC68000 and UltraSPARC) AT&T syntax is the best thing since sliced bread: it's perfectly logical to move something to somewhere, instead of "move to somewhere something".

<comment><USER7> I haven't done any 68K Asm and barely glanced at SPARC, but how does src, dst interact with noncommutative operations like subtraction and comparison? E.g. with x86 Intel syntax,

        cmp eax, 5     ; eax - <USER2>
        jg morethan5   ; eax > 5 ? then jump.
        sub eax, ecx     ; eax = eax - <USER3>

This is one of the most confusing things about AT&T x86 --- the comparisons and subtractions have their operands reversed, and you have to identify and manually reverse them to understand the code correctly. With Intel syntax, the operands to a subtraction appear in the usual arithmetic order. Or do those processors' syntax keep the order but instead replace the subtrahend with the result??

        sub A, B    ; B = A - B ??

<comment><USER10> _This is one of the most confusing things about AT &T x86 --- the comparisons and subtractions have their operands reversed,_

That is confusing as all hell to me: if I compare x to 5, and 5 to x, it's still the same comparison, so what difference does it make?

Anyway, on Motorola 68000 it would look like so, assuming data was in data register 0 (there are eight general purpose data registers, and eight general purpose address registers):

      cmp.l #5, d0    ; d0 is unchanged by the comparison
      bgt MoreThanFive
      ;
      ; substract the value of d1 from d0, and store the result
      ; in d0.
      ;
      sub.l d1, d0

however, we don't usually branch if greater or lower; we simply compare whether a register is equal to some value:

      cmp.l #5, d0
      bne NotFive

<comment><USER11> >That is confusing as all hell to me: if I compare x to 5, and 5 to x, it's still the same comparison, so what difference does it make?

I haven't done assembly code for a while, and was not an expert at it earlier, so guessing, but:

it may be because of what flags in the flags register (if there is one nowadays) get set - they could be different for the two versions of your comparison.

<comment><USER10> Yes, there is a status register, every processor must have one (or else the processor couldn't function). Doesn't matter whether you compare 5 to a register (or memory location, depending on the processor), or memory / register to 5, the same bit(s) will still be set in the status register.

<comment><USER11> >Doesn't matter whether you compare 5 to a register (or memory location, depending on the processor), or memory / register to 5, the same bit(s) will still be set in the status register.

Are you sure? That was my whole point - that it may not be that way. As I said, it's been a while, but it seems to me that the bits that get set in the flags/status register, on comparing A to B, should be, in some sense at least, the opposite (maybe not for all the bits) of what would get set on comparing B to A; because I thought it would be done by subtracting A from B or B from A, and then setting (some of) those flag bits based on which was greater or equal. If that is so, comparing A to B will not have the same result in the register as comparing B to A. And the reason why I think so, is that there are assembly instuctions like JGE (Jump if Greater or Equal), JE (Jump if Equal), JNE (Jump if Not Equal), etc. - the meaning of those instructions would get changed and so would the resulting action (jump or not jump) based on the looking at the flags set on comparing A to B vs. B to A.

<comment><USER10> You're overthinking this way more than you need to.

On any given processor, in this context, there is one and only one way to compare an immediate value with one in a register, so you don't have to worry about whether you're comparing 5 to %eax, or eax to 5: you can't subtract the value in %eax from 5, because 5 is an immediate value, not a memory location.

      	.section	__TEXT,__text,regular,pure_instructions
      	.globl	_main
      	.align	4, 0x90
      _main:
      	movl	$17, %eax
      	cmpl	$5, %eax
      	jle	Exit
      	movl	$5, %eax
      Exit:	ret

now let's assemble and link that using the C compiler's front end, so we won't have to worry about _init and _fini:

      > cc cmp.s -o cmp
      > ./cmp; echo $?
      5

note the cmpl $5, %eax instruction. Now watch what happens when I attempt to compare %eax with 5:

      	.section	__TEXT,__text,regular,pure_instructions
      	.globl	_main
      	.align	4, 0x90
      _main:
      	movl	$17, %eax
      	cmpl	%eax, $5
      	jle	Exit
      	movl	$5, %eax
      Exit:	ret

      > cc cmp.s -o cmp
       cmp.s:6:13: error: invalid operand for instruction
       cmpl %eax, $5
                  ^~

it can't be done, because there is one and only one way to compare an immediate value with one in a register. intel or AT&T syntax -- dst, src or src, dst -- the comparison is the same. Therefore, AT&T syntax is the best thing since sliced bread, because it's left to right instead of right to left, which is how we think in terms of taking something and moving it somewhere -- in the physical world, step 1. will be to take an object and step 2. will be to move that object somewhere.

<comment><USER11> I think we might be talking about different things, or past each other. Let it go.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> So, this is fantastic, but I want to make an appeal for the most important thing to understand about any assembly language, even before you work out the individual instructions:

Break your programs into _basic blocks_! Reverse engineers never read assembly in a straight line. Instead, they read the _control flow graphs_ of subroutines, which is the graph where nodes are runs of instructions ending in jumps and branches, and the edges are the jump targets. I hope this doesn't sound complicated, because it isn't: it's literally just what I wrote in this paragraph. It takes about 15 minutes for most platforms to learn enough to recover CFGs from subroutines by hand.

To get a decent understanding of what a chunk of assembly code is doing, all you really need is:

* The code broken into subroutines (this is usually your starting point) and then CFGs (good disassemblers do this for you, but it's easy to do by hand as a first pass)

* The CALLs (CALLs don't end basic blocks!)

* The platform's calling convention (how are arguments passed and return values returned from subroutines)

There are two tricks to reading large amounts of assembly:

1\. Most of the code does not matter, and you won't be much better off for painstakingly grokking it.

2\. Virtually all the assembly you'll see is produced by compilers, and compilers spit out assembly in _patterns_. Like the dude in The Matrix, after an hour or so of reading the CFGs of programs from a particular compiler, you'll stop having to read all the instructions and start seeing the "ifs" and "whiles" and variable assignments.

</comment><comment><USER13> To understand assembly it really helps to know at least something about how computers work on a low level. When I first tried learning it (long time ago, in a high school) I had no idea how computers really work on such a low level, how CPU's addressing registers and that kind of stuff, and while I managed to learn the syntax, even write some asm code, it was all really confusing to me. And only few years later on University, after I've learned in details about the cpu architecture, registers, buses, DMA, etc, it suddenly all started to make perfect sense and became 100x more clear and easier. So if you're interested in this, it will save you a lot of effort to invest some time first to learn the computer architecture basics, and then from there go to learn the assembly lang. Just my $0.02

<comment><USER14> It's helpful to realize x86 assembly is not what's executed by the machine; machine code is. One assembly instruction, e.g. ADDL, is translated to several different machine code instructions depending on the destination, source, and addressing mode.

<comment> amw-zero Can you point to a source for this? All x86 assemblers that I know of map one assembly instruction to one machine instruction.

<comment><USER15> I'm looking at the Microsoft Macro Assembler 5.1 Reference manual (it was nearby and easily accessible to me; yes it's old (from the very late 80s or early 90s) but it covers the 32 bit 80386, which is still valid.

Anyway, it shows three different encodings for the ADD instruction. The first:

        000000dw mod,reg,r/m

This adds register to register, or memory to register (either direction, the d above) using either 8 or 16/32 bits (the w above [1]). The second form:

        100000sw mod,000,r/m

This adds an immediate value (8 or 16 bits, w again) to a register. The s bit is used to sign extend the data (s=1; otherwise, 0-extend it) if required [2]. The final form:

        0000010w data

This adds an immediate value to the accumulator register (EAX, AX, AL) [1]. That's three different encodings for the "same" instruction. The MOV instruction (and again, I'm only talking about the 80386 here) has 8 different encodings, depending upon registers used.

[1] If the current code segment is designated as a 16-bit segment, then the w means 16 bits, _unless_ a size override byte (an opcode prefix byte) is present, in which case it means 32-bits. If the current code segment is designated as a 32-bit segment, then the w means 32 bits, again _unless_ a size override byte is present, in which case it means 16-bits.

[2] It seems to me that if w=1, then the s bit is extraneous and thus could be used to encode other instructions. I'm not sure if that is the case but it's common to use otherwise nonsensical instruction encoding to do something useful.

<comment><USER7> _It seems to me that if w=1, then the s bit is extraneous and thus could be used to encode other instructions. I 'm not sure if that is the case but it's common to use otherwise nonsensical instruction encoding to do something useful._

Opcode 82h is an alias for 80h --- it presumably sign-extends the immediate value into an internal temporary register, but the upper bits don't matter anyway since it's an 8-bit add. Some interesting discussion on that here, along with an example application:

[http://computer-programming- forum.com/46-asm/143edbd28ae1a09...](http://computer-programming- forum.com/46-asm/143edbd28ae1a091.htm)

</comment></comment></comment></comment></comment><comment><USER16> x86 is the worst ISA. If you want to play with assembler without feeling a desire to stab yourself and end it all, I recommend ARM.

Or go learn Z80, x86's weird, 8-bit cousin (it had a 16-bit version, but it sold poorly), which had a greater emphasis on backwards compatability (you can run code from the original 8080 on a Z80, unchanged), and is nicer to work with (because it wasn't extended in unticipated directions far beyond its original capabilities, while keeping fetishistic backwards compatability by stacking hack on top of hack on top hack. It also didn't have memory segmentation, otherwise known as The Worst Thing.)

There are only two common reasons to learn Z80 assembler, though: to program the Gameboy (which runs on a modified Z80 with all the cool instructions removed), and to program a TI calculator, thus making all highschoolers in your area immensely happy.

TI calculators are a comically overpriced scam, that have only survived because of the College Board, but that's another story.

<comment><USER17> I never felt more like stabbing myself than when trying to cipher out exactly which immediate values are possible on ARM, and which are not. X86 I happen to enjoy. It is not "the worst ISA" by any means. It has wonderful code density, which turns out the be very important. There's a reason that x86 won and continues to win.

<comment><USER18> When originally invented the x86 instruction set _was_ efficient - the most- used instructions had shorter byte code sequences. But eventually some instructions got 'left behind' by the compilers. There are a whole host of single-byte instructions that are never, ever used by a compiler - <USER4> register exchange instructions for instance (xchg eax, ebx). Compilers just schedule destination registers carefully, never need to swap them around.

Also the whole set of exchange-register-with-itself were defined but never used. E.g. xchg ax,ax which does nothing in one byte. In fact that one _was_ considered useful, its used as the 'no-op' instruction (0x90) right? But what about xchg bx,bx, xchg cx,cx and so on? Just wasted single-byte opcodes. Leaving actual common instructions to use longer bytecode sequences.

So maybe an executable should begin with an opcode-decode-table that is loaded with the code, that tells the hardware what byte sequences mean what instructions. So each executable code can be essentially compressed, using optimum coding for exactly the instructions that code uses most often. Just thinking out loud.

<comment><USER16> That would be cool, but I would not want to hand-code assembly on such a platform. That makes memory segmentation look fun.

<comment><USER18> The table could be created from your assembly automatically? I would never want to code the hex directly in any case.

<comment><USER16> That could work...

I thought it couldn't a second ago. I don't know why. Makes no sense to me now.

</comment></comment></comment></comment></comment></comment><comment><USER19> A video I like to send friends asking about how to understanding x86 assembly is [https://www.youtube.com/watch?v=yOyaJXpAYZQ](https://www.youtube.com/watch?v=yOyaJXpAYZQ)

I think the video maker does a good job of mapping a simple C program to its disassembly.

</comment><comment><USER10> _And, of course, modern compilers will usually produce faster, more optimized code than you ever could, without making any mistakes._

This assertion comes up over and over again in the last 30 years. Every time I've had it asserted to me, it always came from non-assembler programmers, who always wrote in a high level language. I have yet to see evidence of optimizing compilers generating code even remotely close in efficiency to what we would code directly in assembler.

A coder would never write all those extra frame pointer setup code, nor would they waste encoding and tact cycles shuffling values from one register to another. For example, a human might write the code from the article thus:

      Add42: addb $42, %al
             ret

and that's it. No frame pointer or stack setup, that's all unnecessary overhead because compiler algorithms can't reliably make such contextual decisions.

<comment><USER20> >>because compiler algorithms can't reliably make such contextual decisions

They can actually. Compiler optimizations have come long way, even Java's JIT should be able to optimize that. (ok, not using the AL register)

My personal story - I used to use exclusively assembler for 6502 and 8086 as it actually ran fast enough. In the mid 90s I saw Delphi's code (and Delphi was not known for its optimizations) but it was able to use the Pentium instruction pairing which takes quite an effort to accomplish by hand.

While beating an old compiler was easy it was the time the compilers began making strides rivaling humans.

Still, hand written inner loops in Assembly might yield some performance (iirc, grep still relies on) but overall there are very limited amount of settings where there would be significant difference... to warrant the effort (incl. correctness and [micro]benchmarks)

<comment><USER10> _My personal story - I used to use exclusively assembler for 6502 and 8086 as it actually ran fast enough. In the mid 90s I saw Delphi 's code (and Delphi was not known for its optimizations) but it was able to use the Pentium instruction pairing which takes quite an effort to accomplish by hand._

But a human would almost never use some of those more complex instructions, for a very simple reason: they eat too many clock cycles. When one is coding in assembler, one usually targets two constraints:

1\. the least amount of clock cycles needed to pull off an operation;

2\. the least amount of bytes to encode the operation.

Where those two meet is where the best coders get unbelievable performance out of the hardware. At least that's the case in the demo scene, although many nowadays cheat by banging the GPU's in CUDA or OpenGL.

</comment></comment></comment><comment><USER21> As AT&T syntax is still being used, at this point I'm willing to believe it's to purposely make x86 assembly hard and unpleasant to read and write. Perhaps so people will want to stay away from it, and in a way, to reduce the amount of code that is tied to the x86 platform. It spreads the thinking x86 assembly is terrible and ugly.

Intel syntax is much cleaner, in particular, Intel Ideal (as opposed to MASM), and specifically, FASM (flat assembler). FASM makes it as clean as possible and turns writing assembly into a joy.

Compare:

        movl %fs:-10(%ebp), %eax       ; AT&T
        mov eax, dword ptr fs:[ebp-10] ; MASM
        mov eax, [fs:ebp-10]           ; FASM

<comment><USER15> As I recall, the "dword ptr" stuff was only necessary if the instruction was otherwise ambiguous. Using EAX means you are using a 32-bit destination. But something like:

        move fs:[ebp-10],5

is ambiguous. Is that an 8-bit constant? 16 bits? 32-bits?

<comment><USER21> I believe MASM-style assemblers require "dword ptr" at all times and many disassemblers keep outputting that in unambiguous situations.

Your example won't assemble because size can't be guessed, but this will:

        mov dword [fs:ebp-10], 5

</comment></comment></comment><comment><USER22> Nice article! It take a subject that is scary for many and does a great explaining a little bit very clearly using good visual aids. I look forward to the next articles!

<comment><USER23> Thanks a lot. I'm looking forward to writing it, I think it will be interesting.

</comment></comment><comment><USER24> > It turns out x86 assembly is much simpler than Hungarian

Well, what isn't? I have a knack for languages but that beautiful beast seems like an almost impenetrable fortress of strangeness.

On the other hand, that encourages me to learn to read basic assembly.

</comment><comment><USER25> I thought this sentence was curious:

"To write code that runs directly on your microprocessor you need to know how memory segmentation works"

Although you can't completely ignore segments, in practice at least on Linux the only segments in use are user code/data and kernel code/data segments.

Does anyone know why the author might suggest that understanding segmentation is necessary to write Assembly code?

<comment><USER26> Probably because you need to deal with the MMU. You can't just write raw assembly and expect it to work (ignoring the MMU), but the kernel takes care of that for you.

<comment><USER25> I am not following - what is raw assembly? I can write a complete userland program using only Assembly and it will run just fine. When do I need to deal with the MMU exactly?

<comment><USER27> > When do I need to deal with the MMU exactly?

When writing programs for user mode (ring 3 on x86), you hardly need to care (except sometimes use some segment override prefixes (cf. [https://news.ycombinator.com/item?id=13052076](https://news.ycombinator.com/item?id=13052076)), which pedantically is "dealing with the MMU", since because of the MMU this works; but in my opinion it is not necessary to understand the technical details behind it, why this works).

On the other hand, if you are an OS ("operating system", here I don't mean "open source") developer, you probably better know the details of the MMU.

Concerning [https://news.ycombinator.com/item?id=13052892](https://news.ycombinator.com/item?id=13052892): I also consider the author's statement as misleading that one has to know how segmentation works. The knowledge of about segmentation is absolutely necessary for x86-16 (real mode), which many people tend to associate with assembly (because there seem to be many more assembly tutorials available for DOS/x86-16 than for x86-32 or even x86-64), but hardly relevent for people who just write user mode code.

</comment></comment></comment></comment><comment><USER28> If you want to learn how to read X86, don't choose this AT&T style syntax as it's a monstrosity.

</comment><comment><USER29> You might like this:

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

</comment><comment><USER30> Reading assembly language is about having the computer in your head, just like regular programming. You read and execute the instructions just like any other language, just the operations are that much smaller and less abstract. Each instruction is a 'function call'; just like any low level language you leverage abstraction to build up these operations into greater pieces of execution knowledge using macros and functions in logical ways to get the outcome.

It's not magic. The best way to learn assembly is to program in it. I learned on the Gameboy by getting a job and programming 2 games in it. Fun as hell, especially when the machine is small enough to really fit in your head and clock cycles count at 4Mhz.

</comment><comment><USER31> When I worked at Intel in the Server BIOS group, the development process involved several iterations of developing macro abstractions until the x86 ASM code became more readable and maintainable.

No one particularly enjoyed working in raw ASM 100% of the time.

</comment><comment><USER32> This is the first time I actually read all the way through an article on assembly. It was nice and concise. Granted, I'll probably forget this until the next article (due to focusing on other studies), but thank you none the less.

<comment><USER23> Thanks! Glad to hear you made it to the bottom :) I always worry that I tend to write on and on for too long.

</comment></comment><comment><USER33> Nice illustrations. It was a good idea to get the prologue/epilogue out of the way. Note that for optimized code, it's usually unnecessary. For more info: [https://nickdesaulniers.github.io/blog/2014/04/18/lets- write...](https://nickdesaulniers.github.io/blog/2014/04/18/lets-write- some-x86-64/)

</comment><comment><USER18> The examples seem odd to me: the argument order is reversed from every Intel disassembly (or assembler) I've ever used. Addi edi, 43 is the normal way to say "Add 43 to edi". The destination register is normally first; the source register 2nd in the disassembly, right?

<comment><USER34> gdb uses AT&T syntax by default. [0]

[0] [https://en.wikipedia.org/wiki/X86_assembly_language#Syntax](https://en.wikipedia.org/wiki/X86_assembly_language#Syntax)

<comment><USER35> This article uses lldb, and not gdb. Both default to AT&T syntax, I guess.

</comment></comment></comment><comment><USER36> Excellent article that has context around the how and why, which I appreciated. Pat has a great "explorer" writing style.

I was going to post this last night but figured it must have been posted already. I was wrong! Nice to see it ok the front page.

<comment><USER23> Thank you! Knowing that people enjoy reading this sort of thing makes it worthwhile.

</comment></comment><comment><USER37> If you're experimenting with asm in crystal, you might want to use --prelude=empty to remove the standard library to make the asm output cleaner. You can then then require lib_c and use that directly.

<comment><USER23> I tried that while researching the article, but found the call to "puts" doesn't link without the standard library code. And without a "puts" or similar call to produce output LLVM optimized the entire program away :)

I suppose this could work if, as you suggest, I manually called out to a lib_c function like printf instead.

<comment><USER37> Yeah, puts is part of the part of the standard library, and uses crystal's evented io framework, fiber scheduler and libevent. This is what most of the extra code in the asm output will be doing.

</comment></comment></comment><comment><USER38> Btw if someone has a local copy of intels intrinsics tool before they converted it into a web version - could you please share it?

</comment><comment><USER39> What a great read. Thanks for sharing op.

</comment><comment><USER40> Excellent article.</comment>


While You Were Mowing Your Lawn, We Created an Internet Startup - <AUTHOR> http://www.marketwatch.com/news/story/while-you-were-mowing-your/story.aspx?guid=%7B5CECF0D1-24B1-47F0-9A2A-08C44F655D3A%7D&dist=hppr

<comment><USER2> Love the title, drives home a fascinating commentary on today's tech.</comment>


Is Web Development Computer Science? - <AUTHOR> http://blogs.msdn.com/alfredth/archive/2009/12/10/web-development-or-computer-science.aspx

<comment><USER2> From Wikipedia:

 _Computer science or computing science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems._

So software development (and therefore Web Development) is not, in itself, computer science, but builds on computer science concepts and findings (theory, algorithms, etc).

</comment><comment><USER3> Web development is a subset of "software engineering".

Computer science is not software engineering. It also is not a science and, arguably, is not really about computers.

Software engineering isn't really much of an engineering profession, for that matter.

Grumble.

<comment><USER4> Computer Science is just science at the start. We know a couple of things like Shannon's theorem and Amdahl's law, but that's about it. Unfortunately a lot of experimental computer engineering is also being sold as computer science.

<comment><USER3> "Science" is, loosely speaking, a process for formulating and evaluating predictive models of the behavior of systems with unknown characteristics, based on empirical observation.

Theoretical "computer science" is, most of the time, a matter of building abstractions from smaller concepts and making analytical, not empirical, observations of the characteristics of those abstractions. This is much closer to what is generally thought of as "abstract mathematics".

The closest you're likely to get to scientific methodology when programming is when you have to write test code to figure out what the crap this freaking third-party library you're stuck with is actually doing because clearly it isn't what the documentation says it should and... at which point we've moved away from "computer science" and into why "software engineering" is such an embarrassment compared to real engineering disciplines.

If you want to hear someone smarter than myself expound similar ideas, look up some of E. W. Dijkstra's work--the man was a genius, a "computer scientist" _par excellence_ , and he expected software engineers to act like engineers.

</comment></comment></comment><comment><USER5> _Sure there are self taught people who do great things but having a good solid base of computer science knowledge would seem to be a big edge for learning the new technologies._

I don't understand -- To me, the premise of this article seems to be that these are two different (mutually exclusive) types of programmers. I don't think anyone here would subscribe to that tenuous assertion.

<comment><USER6> They're not mutually exclusive, but very few astronomers grind their own lenses.

</comment></comment><comment><USER7> Web development is almost all "construction", which has little to do with computer science. Look it up in Code Complete.

I've worked in web development for many years, doing some pretty complicated stuff, and I've never needed to remember how to do a bubble sort.

In other news, Ben & Jerry recommend a quart of ice cream a day.

<comment><USER8> Other than an academic exercises I have never had to write a sort in any language I have used. But know what does involve computer science, knowing what type of pre-written sort to apply to your problem based on time and memory constraints. Or knowing the performance characteristics of different key/value stores on a specific data set.

Saying web development is just construction is crazy. Maybe for some brochure- ware sites it is, but not for ebay, amazon, google, etc.. It is like saying building a sky scraper is just construction, just like building a dog house.

<comment><USER9> Why is sorting cited as _the_ computer science problem?

There's a lot to be learned about the boundaries between P and NP. For example find polynomial algorithms for linear optimization. Or it would be nice to know, if randomization --- which helps in practice [0] --- really does help in theory, too.

[0] E.g. a quicksort that selects a pivot at random.

</comment></comment></comment><comment><USER10> The article's title itself poses a single question. But really, this article is about two separate, but related, issues:

1\. Does a Web Developer benefit from as educational grounding in the Computer Sciences? 2\. Are Web Developers (and by extension Software Engineers) by their very nature _also_ Computer Scientists?

The first question is pretty straightforward to answer. Of course they do. The second one isn't so obvious, though. Furthermore, your interpretation of the "right" answer is going to be colored by your own educational background and experiences with others in the course of your respective academic/commercial career.

</comment><comment><USER11> I really didn't find this particular query to be odd at all. From the subject being searched, I can only infer that this is a person who is neither web developer nor a programmer. It would seem a logical leap to presume this is a current or soon to be college student curious about what all of these terms actually mean in relation to what they want to do.

I know that while I was in school I was(and still at times) confused about what it all meant - IT, CS, Web Dev, Software Engineering... Although this searcher will likely start to become more comfortable with all of these terms and disciplines as well as begin to understand how they relate and how they differ, it is a bit daunting when you first start out to identify what term actually describes what it is that you actually want to do.

MIS, CS, IT, Web Design, Software Engineering - college programs, that although may describe the overarching discipline, don't really fully represent what niche in the technical industry they serve to address... For example, I have a BSCS, though by far the majority of my project involvement has been done with back end web application development using established frameworks and site design on top of mature platforms - little "Computer Science" being done here (in the 'study of the theory of...' sense).

</comment><comment><USER12> I think if you consider a plain old HTML page as Web Development then fine, it is not Computer Science. I consider that Web Design. To me Web Development is making robust applications that can do more then display markup. All the back- end stuff is what makes it an application, and in turn makes it computer science.

<comment><USER13> But computer science isn't about building applications.

</comment></comment><comment><USER14> Web dev is SE and not CS because nobody code websites on Turing machines, and according to CS theorem all programing langs are equal so in theory you can do that:)

</comment><comment><USER4> This fellow shouldn't call himself a computer science teacher, that's a completely different subject. He's a computing teacher.</comment>


TikTok is not the future we want - <AUTHOR> https://medium.com/trustory-app/truweekly-6-tiktok-is-not-the-future-we-want-b88bc6c76ec6 <comment><USER2> > _Since my boyfriend is a Twitter influencer_

I couldn't help but laugh out loud when I read this line. I don't know if I will ever get used to seeing/hearing sentences about being a "<insert social media> influencer", although I'm sure plenty of them make great livings.

> _We live in a country where most kids would rather be YouTubers than > astronauts._

I've been seeing this thrown around all over the place lately and can't help but point out that no one has determined that kids don't want to be astronauts _in favor of_ being an influencer. It's not like the choice is astronaut vs. influencer. Maybe more kids want to be doctors, data analysts, programmers, etc. Causation vs. correlation, and all that.

> _It's sad and absurd. But it's a fact: Instead of aspiring to become > astronauts, future generations of America would rather go viral on TikTok_

Again, where is the evidence that kids want to go viral on TikTok _instead of_ being an astronaut? More kids want to be influencers, less want to be astronauts. Doesn't mean the two trends are related.

> _This is one of many reasons why I'm so passionate about TruStory._

Oh, oops. This is just an ad.</comment>


Ask HN: How do you store thoughts, ideas for the future? - <AUTHOR> I often come across some interesting concept, which I want to apply in the future in either my personal or professional life, how do people store such nuggets of information... <comment><USER2> iOS/OSX Notes app</comment>


Google to change the look of its homepage - <AUTHOR> https://www.theguardian.com/technology/2017/jul/20/google-change-home-page-first-time-since-1996-app-based-feed-news-events-sports <comment><USER2> Google has denied that it is making the described changes to it's desktop homepage, but indicated that it plans to do something similar to what is described on its mobile page sometime in the future, but as yet doesn't have a firm idea of the design.

[http://www.independent.co.uk/life-style/gadgets-and- tech/new...](http://www.independent.co.uk/life-style/gadgets-and- tech/news/google-home-page-redesign-search-new-look-feed-mobile- app-a7851786.html)

</comment><comment><AUTHOR> This sounds like a terrible idea to me.

\- The original design stood for more than a decade because it is impossible to dislike. Tacking on more stuff to the homepage can only cause people to dislike it for one reason or another.

\- When I want to perform a focused task with a clear intent --- "search the internet" \--- why on earth would it make sense to have distractions in such a place? Is it the right place to hear about the latest sports news? I don't think so. It sucks that such a badly motivated design decision is coming to pass.

</comment><comment><USER3> First reaction: "What? They can't do that!"

Second reaction: "Wait, I never use the homepage anyway (but search via address bar etc)..."

</comment><comment><USER4> Did Goog fix the ugly kerning on the last change (a font change)? No.</comment>


Theranos Faces Growing Number of Lawsuits Over Blood Tests - <AUTHOR> http://www.bloomberg.com/news/articles/2016-10-14/theranos-faces-growing-number-of-lawsuits-over-blood-tests <comment><USER2> Some of you may remember this article and these comments:

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

When I read this, I immediately thought it was a red flag. So far, I have never heard of a founder/employee who successfully executes without sleeping or idolizing a mythical version of Steve jobs.

I have a feeling that this is a clear pattern. Founders who claim not to need to sleep / date / etc. have major problems with their business.

<comment><USER3> Elon Musk doesn't sleep much, if I remember right he said about 4 hours per night once.

<comment><USER4> To contrast that, Linus Torvalds has said many times over the years that he gets at least 9 hours of sleep everyday ([http://www.linuxscrew.com/2011/07/15/linus-torvalds-the- fact...](http://www.linuxscrew.com/2011/07/15/linus-torvalds-the-facts-you- didnt-know/)).

Me personally, I do NOT feel well if I haven't had a solid uninterrupted 8 hours of sleep.

<comment><USER5> I'm close to the same. I can function on 7, but any less than that and I'm a basketcase, and really do honestly need 8 a day. I feel like people think it's a virtue or something if they can get 4 hrs of sleep and not fall down from exhaustion, but in reality it's so unhealthy.

<comment><USER6> I feel like different people have different sleep requirements. Although veganism changing those requirements is likely a quack factoid. Veganism! The meth of diets!

</comment></comment></comment></comment></comment><comment><USER7> I really think the underlying problem is that she was a pretty young woman and this prevented her from getting the kind of reality check she should have gotten much earlier. I am a woman and I find that men either won't really engage me at all or they want to, I don't know, be nice? Be encouraging?

I know it is always challenging to get good constructive feedback, but I think charming, pretty women more often than others either get no feedback or get gushed at. I have a tendency to get treated by people like I am their best friend or something and it often weirds me out and fairly often leads to uncomfortable and problematic situations. I have spent a lot of years trying to find a solution to this.

I am kind of glad to see this company being reigned in, but I find it sad to watch what happens with Ms. Holmes, who probably believed and probably still believes the hype about herself. I think she still is failing to get the memo she needs to get and it is kind of tragic. She was essentially a child when she started this. Her elders and so-called advisors -- all brilliant men, it seems -- should have pulled her up short a long, long time ago. Instead, she is being dragged through this bloody mess.

It's a hard thing to watch, in part because I am so glad to see this vaporware company called on its BS, but at the same time I am generally inclined to be compassionate and I just feel someone -- probably many someone's -- failed in their duty (edit: To Ms. Holmes, a young kid with a dream) long ago and for a long time. It should have never gone this far.

<comment><USER8> > charming, pretty women more often than others either get no feedback or get > gushed at

Having watched her speak, she is neither.

> Instead, she is being dragged through this bloody mess

I am at a loss in this sentence. In a world where immigrant children drown at sea, we are supposed to think she s actually a victim?

I don't think the reason she didn't get her reality check was her looks, but her family wealth and connections. She got plenty of feedback since WSJ started reporting about her. Her response was even more secrecy pretending there is no elephant in the room.

<comment><USER7> I am a chronically ill homeless woman who was molested and raped as a child. I find your comment rather offensive for a great many reasons. Children drowning at sea is not relevant to the topic and most people I talk to online do not genuinely care about my suffering. So this appeal strikes me as a rather nasty means to be dismissive of me. I was not suggesting anyone else was obligated to have compassion for her and I am quite confident your supposed compassion for real suffering will fail to in any way benefit me.

<comment><USER8> Making arguments for and against things is one of the joys of discourse. There is nothing in my comment (even remotely) referring to you. Instead you are the one basically blaming me of being a bigot. I might be wrong, but you also seem to be seeking an apology. If you feel you need to "benefit yourself", please seek the help of your local welfare authorities.

<comment><USER7> I commented on how I personally feel. You are attacking that. It is a form of personal attack. And thank you for proving my point that your comment about children drowning is just a nasty rhetorical device.

<comment><USER8> I am defending myself against you basically call me offensive. I said nothing about yourself. It is not a form of personal attack just because you name it so.

</comment></comment></comment></comment></comment></comment><comment><USER9> I'm reminded of the cargo cult mentality.

Just because you act like Steve Jobs and have the same fashion sense and sense of secrecy, doesn't mean you can build another Apple.

It almost feels as though she was more focused on her image as an important CEO and a female pioneering a role in tech than, you know, actually building the tech and company itself.

<comment><USER10> Agreed — if you read the great Vanity Fair article [1] about Theranos, one thing that becomes apparent is that Holmes's public statements were classic sales hubris; she was publicly announcing rollouts of technology that didn't work yet, and her scientists were learning about the plans after the fact. It's possible that she genuinely believed her own hype — her surprised reaction to the FDA shutting them down seems to indicate this.

[1] [http://www.vanityfair.com/news/2016/09/elizabeth-holmes- ther...](http://www.vanityfair.com/news/2016/09/elizabeth-holmes-theranos- exclusive)

</comment></comment><comment><USER11> It's interesting that in the midst of all this, Holmes is carving out time to host a Hillary fundraiser[1].

I almost wonder if we'll see the government/military magically acquire her company at a pre-scandal valuation in a couple of months.

\---

[1] [http://www.recode.net/2016/3/14/11586966/theranos-ceo- elizab...](http://www.recode.net/2016/3/14/11586966/theranos-ceo-elizabeth- holmes-is-holding-a-hillary-fundraiser-with)

<comment><USER12> Not going to happen. Bureaucrats aren't CEOs, they can't just unilaterally spend billions of dollars. The money would have to be appropriated by Congress, and the chance of Congress doing that in the current environment is about 0%. Whoever sponsored the bill would get raked over the coals for years.

<comment><USER13> Didn't DoE give a loan to a solar startup?

</comment></comment></comment><comment><USER14> I have no inside knowledge but at this point it doesn't seem that Theranos has any real assets outside of whatever hard assets and cash they've still got from their funding?

At what point do you just throw in the towel, declare bankruptcy and try to make your creditors and investors as whole as possible.

The buzzards are circling on this one.

</comment><comment><USER15> Dockets:

[http://www.plainsite.org/profiles/theranos- inc/](http://www.plainsite.org/profiles/theranos-inc/)

[http://www.plainsite.org/dockets/304bu4iy6/arizona- district-...](http://www.plainsite.org/dockets/304bu4iy6/arizona-district- court/toy-v-theranos-incorporated-et-al/)

</comment><comment><USER16> tl;dr: Patients and investors are pissed, and so they're suing for fraud.

</comment><comment><USER17> Is there a real chance she might be criminally charged, and end up in prison?

</comment><comment><USER18> Are other medical startups having troubles because the science is inherently hard or is it really because Theranos did some "mistakes" ?

</comment><comment><USER19> Here is naive question: The problem Theranos is solving can't be that difficult, you just need to take smaller amounts of blood and automate testing. Is anyone else doing this? Seems very promising area. I see that Theranos is facing crazy obstacles to make things work, not 100% sure why can't they produce something instead of nothing.

<comment><USER20> Statistics stops you. Blood testing is all about statistics. You measure a certain number of things in the blood test, which gives you an idea of how much of the thing you're looking for is in the blood.

Some of these things (bacteria, virus, etc) only needs to be in the blood in very low concentrations to be harmful, and to get a good reading you need a larger sample.

</comment></comment><comment><USER21> Most software companies have a Theranos-like business model, ship broken stuff on purpose for profit.

It worked great until someone thought it was a great idea to do it with technology used to provide medical treatment to human beings.

<comment><USER22> It's also unwise when your concept probably isn't even theoretically possible.

You can definitely bite off more than you can chew with software, but most problems are actually solvable.

<comment><USER23> > It's also unwise when your concept probably isn't even theoretically > possible.

If the concept is easier and cheaper blood tests, I think we can solve that.

If the concept is testing with a given volume of arbitrary blood, you've dug yourself your own grave.

<comment><USER24> I'm not familiar with medicine; was this not known in the field ?

Surely a student from Stanford, who I hear was also doing research at NUS, should have had access to enough advisers who could've averred that to her (before the company took off) ?

<comment><USER25> A lot of her professors in Stanford told her that her vision is not possible. Of course she didn't listen to them.</comment></comment></comment></comment></comment>


Child sexual abuse material could be going undetected because of 'false reports' - <AUTHOR> https://www.iwf.org.uk/news/thousands-of-images-and-videos-of-child-sexual-abuse-could-be-going-undetected-because-of- <comment><USER2> He said: "If they are caught actively searching for this, they will have no more of a defence than someone that's doing it because they want to find it for their own gratification. It is not a defence in court going looking for this."

I wonder, with the rise of deep fakes and CGI, why a company hasn't come up with a business model offering professional rendered synthetic child pornography. It seems to me that there would be demand for it, and if an ethically un-encumbered product is indistinguishable from the real thing, much of the demand of child sexual abuse imagery would evaporate.

<comment><USER3> People who consume child pornography have severe mental health issues. They need counseling and treatment. This idea is not what they need and is repugnant.

Also, who in their right mind would build, QA, or market such a soul crushing product.

Some Taboos will remain Taboos despite "hurting no one".

<comment><USER4> If it materially reduced harm to human beings, that's a theoretical benefit. Regardless, by insulting the parent's _idea_ ("this idea ... is repugnant"), you've presented yourself as unreceptive to good faith discussion.

<comment> throwaw4y-plate Manufacturing child porn IS repugnant, even if it is a deep whatever. Is that so controversial?

<comment><USER5> While it is repugnant, whether or not it is immoral is another matter. If it is immoral, it likely deserves being criminalized, whereas if it is not immoral, democratic liberal ideals suggest that the law should protect such manufacture from unjust censure instead.

The case against filmed CP is straightforward: minors are harmed in the process. But what is being harmed in generated imagery? If nothing is harmed, what is the basis for it being immoral?

<comment><USER6> Unintended consequences abound.

Once Pandora's Box of deep fakes is open, are we going to permit racists to generate genocidal imagery to slake their hatred for $ETHNICITY ?

I mean, as long as only fake Elbonians are dying unspeakably, it's OK, no?

Because the same people who just gotta have that stuff would never want to operationalize that ickniness, would they?

How about just "no"?

<comment><USER5> Yet just "no" would be an immoral act itself, since it is discrimination against an act that is morally neutral. Let us leave aside the question of the morality of the act that you hypothesize we might eventually decide to commit, and assume it is immoral. (I phrase it this way since these "unintended consequences" don't follow as a matter of fact but require people to decide to perform them.) Even if we in future might end up deciding to commit an immoral act, that is no justification to continue committing the present immoral act.

<comment><USER6> I'm sincerely confused as to whether you're rejecting or embracing activities that could lead others astray.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> 'false reports' - what percentage of those are malicious is a question they should be asking themselves. False claims like that are bad as in such crimes, the mentality is guilty until proven innocent in the eyes of the public at large.

<comment><USER8> Someone making 8300 reports over six months is making 43 reports per day.

You don't stumble upon that many images of child sexual abuse in normal web browsing.

<comment><AUTHOR> It is either wholly fraudulent or a vigilante.

The law does not discriminate between someone pursuing images for their own usage or to report them. If it did, every criminal would be able to use reporting them as a defense in court and look at them for decades.

Possession / viewing / downloading is illegal because it is very difficult to get probable cause for distribution. Some of them encourage distributors as- well. If viewing was legal and it led to more reports and content being taken down, that would be positive but it could go the other way with it being harder to pursue.

</comment></comment></comment><comment><USER9> IWF, the shady company that has near 100% control over the UK internet and blocked wikipedia?

</comment><comment><USER10> Seems some simple filters on their reporting tools could help them more easily deal with inaccurate reports.

They note: "Do report only once for each web address – or URL. Repeat reporting of the same URL isn't needed and wastes analysts' time."

Well, surely they could implement a filter to only allow reporting the same URL once.

Further they note: "non-criminal adult material from pornographic websites"

Surely, there could a be a whitelist for major legitimate porn sites with an automated response that those sites are legitimate businesses not hosting illegal material.

<comment><USER11> >Surely, there could a be a whitelist for major legitimate porn sites with an automated response that those sites are legitimate businesses not hosting illegal material.

Pornhub is currently in hot water over allegations that they have been negligent in keeping child porn off the site. I don't know whether or not those allegations have merit, but it is certainly the case that child porn crops up on mainstream sites from time to time.

Here's one relevant article:

[https://www.bbc.co.uk/news/stories-51391981](https://www.bbc.co.uk/news/stories-51391981)

<comment><USER12> While that article references an incident from 10+ years ago, agreed, CSAM can be on any website with UGC. I'm sure a large amount of false reports is from legal adult performers that appear to look young though.

</comment></comment></comment><comment><USER13> If the blotters of our local PDs are any kind of guide, I'm wondering if there's any crime that's reported with an accuracy rate higher than 25%.

<comment> brian-bk That's what I thought too, 25% accuracy for public reports? That's crazy high! They just don't want to hire more people or improve their process.

</comment></comment><comment><USER14> Why is this submission[0] flagged, yet this is not? Because of the word "black"?

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

<comment><USER9> [https://news.ycombinator.com/item?id=23927223](https://news.ycombinator.com/item?id=23927223) was the same story and not flagged a day or so earlier, but only had 1 comment

</comment></comment><comment><USER15> Why are volunteer, non LE groups doing this in the first place? And how do they screen their "volunteers"? And how do these people get dispensation to view illegal pornography? The whole thing smells rotten to me.

<comment><USER16> I tried calling the FBI to report an uploader on one of my sites who had posted child porn. They wouldn't take the info and instead directed me to NCMEC - a volunteer non-LE corporation.

I don't know why this is standard practice in the US but it rubbed me the wrong way. LE should be taking the lead on this.

<comment><USER17> NCMEC works with law enforcement once they determine that a crime has likely been committed. NCMEC is an excellent org and such public-nonprofit partnerships help free up LE agencies to pursue arrests and prosecutions. The sheer volume of reporting would overwhelm most agencies. They'll wait until they have more concrete leads before getting involved.

<comment><USER16> Well that's just it: I had IP addresses and public posts from the perpetrators and NCMEC never called me back.

<comment><USER18> You may have already found this link, but in case you didn't or anyone else reading is interested, you should send in an online report to CyberTip ([https://report.cybertip.org/](https://report.cybertip.org/)), which is the legally-mandated reporting website if you encounter child porn / abuse material. Reports sent there pass through NCMEC and are eventually forwarded on to law enforcement.

<comment><USER19> I thought this was a pretty good video that gives some insight into what they do: [https://youtu.be/TLPzK4vrxo8](https://youtu.be/TLPzK4vrxo8)

Also this NYT story: [https://www.nytimes.com/interactive/2019/09/28/us/child- sex-...](https://www.nytimes.com/interactive/2019/09/28/us/child-sex- abuse.html)

<comment><AUTHOR> Many criminals are prosecuted under State Law IIRC. NYT covers Federal statistics.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> Seems expected, since there is a fixed line for the age, varying by jurisdiction. People want to do the right thing, so false accusations seem normal.

</comment><comment> throwaw4y-plate Imagine bikeshedding TFA with an argument over "Uber, but for deepfake child pornography."

</comment><comment><USER11> From their website ([https://report.iwf.org.uk/en/report](https://report.iwf.org.uk/en/report)):

>We take reports on UK-hosted non-photographic images of child sexual abuse, such as computer-generated images. The images we can take action on must be of children, pornographic, grossly offensive, and focus on a child's genitals or depict sexual activity involving or in the presence of a child.

More detail here: [https://www.iwf.org.uk/what-we-do/how-we-assess-and- remove-c...](https://www.iwf.org.uk/what-we-do/how-we-assess-and-remove- content/laws-and-assessment-levels/laws-for-non-photographic-0)

It's rich to complain about people wasting time that could be spent on "real abuse imagery" when this organization is also going after _cartoons_. Maybe they should sort that out first?

Also, the HN title is inaccurate. The article claims these reports are _mistaken_ , but does not say they are fraudulent. In fact, I do not see fraudulent reports mentioned in the article at all.

<comment><USER21> There's a potential good use for fake images. Virtual, or well photoshopped, images could be used to lure dealers into distribution, so that a known trace can be followed, hopefully helping to bust them.

<comment><USER22> I don't think they need help to collect such material when it's readily available on the internet

<comment><USER21> Sadly, it's being also produced on request, as "new material" to them has more resell value.

</comment></comment></comment></comment><comment><USER23> One would hope it was closer to 100%

<comment><USER24> I'm not sure I understand. Are you saying it would be better if there were no child abuse, so any report would be false? I'm not sure how that is productive in the context of this post, given that there is child abuse.

</comment></comment><comment><USER25> As horrible and cynical as this is, I feel like they probably should not publish this. I think there are more people who would abuse this information, than who could do anything about it.

<comment><USER26> What kinds of abuse do you think this opens up? That DOSing the people handling this work?

<comment><USER25> Yes, that is exactly what I'm talking about. Sadistic or Machiavellian people with an interest in it may get the idea that they can send false, marginal, or expired reports to waste their time; and equally I feel like this kind of writing is less likely to be read by people considering making a genuine report.

<comment><USER24> Maybe that's the point... Maybe they have some information indicating that false reports originate largely from actual criminals. So this article will bring more out of the woodwork. Perhaps they let their guard down and submit without hiding their identity, to look more legit, and this is how they bait them.

It'd be a great honey pot.</comment></comment></comment></comment>


Ask HN: Can European cookie warnings be avoided by using localStorage instead? - <AUTHOR> I don't exactly what the use of the cookie warnings is, since you can barely use the site if you disable cookies, but even if they were useful, the current implementation on most websites causes most of the page to get covered on mobile.<p>While designers figure out a better way to present the warnings, is it possible to avoid the need for them by using localStorage instead of cookies? <comment><USER2> No. The so called "cookie law" is actually about personal data and doesn't even mention cookies. Using local storage won't help. Some cookie usage is exempt from the notification. The best way to avoid cookie warnings is to not do anything that requires cookie warnings.

"The ePrivacy directive – more specifically Article 5(3) – requires prior informed consent for storage or for access to information stored on a user's terminal equipment. In other words, you must ask users if they agree to most cookies and similar technologies (e.g. web beacons, Flash cookies, etc.) before the site starts to use them."

[http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2...](http://eur- lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2001:008:0001:0022:EN:PDF)

[http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:...](http://eur- lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32002L0058:EN:HTML)

[http://ec.europa.eu/ipg/basics/legal/cookies/index_en.htm](http://ec.europa.eu/ipg/basics/legal/cookies/index_en.htm)

<comment><AUTHOR> I was afraid of that. Thanks for the links, I'll take a look.

From your comment it seems as if any data stored on the server is fine? For instance, I could potentially track all info Google Analytics tracks, what the user clicks on, what torrent files they've downloaded recently etc., as long as I store that on a database instead of a cookie (not that I want to do it, just trying to understand)?

<comment><USER3> You could use a self hosted Piwik instead of Google Analytics [http://piwik.org/blog/2014/10/cnil-recommends-piwik- analytic...](http://piwik.org/blog/2014/10/cnil-recommends-piwik-analytics- tool-no-cookie-consent/)

However be careful of what information you store about your users. The rule of thumb is not to store what you don't really need, and check the law for how much sensitive is what's left. You might have to notify privacy authorities of what you store, why and how you protect it. Your country of operation makes some difference. If you're in the USA check the new Privacy Shield [http://europa.eu/rapid/press- release_IP-16-216_en.htm](http://europa.eu/rapid/press- release_IP-16-216_en.htm)

<comment><AUTHOR> Thanks.

Yes, I'm not storing anything, it was just hypothetical to understand what the deal is :-)</comment></comment></comment></comment>


Startup Quote: Jen Bekman, founder, 20x200 - <AUTHOR> http://startupquote.com/post/1385536320

<comment><AUTHOR> It's very important to us that we use our success to support risk-taking.

\- Jen Bekman (@jenbee)</comment>


UN Needs to Ensure Open and Inclusive Internet Governance - <AUTHOR> http://isoc.org/wp/newsletter/?p=2710

<comment><USER3> UN needs to stay the _bleep_ away from the Internet.

They will be as effective with governance as they have been in East Timor, or Cyprus; with all the compassion of the UN soldiers in the Congo (raping 12 year old girls in exchange for half a loaf of bread)...

<comment><USER4> You beat me to it. The UN is a nice idea, but the current implementation is ineffective in the places it's honest, and corrupt in the places it's effective.

If you've never seen the UN resolution that kicked Taiwan out of the UN, you owe it to yourself to read it -

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

Definitely check out the Wikipedia link if you've never seen it - <USER2> against everything the UN supposedly stands for.

</comment></comment><comment><USER5> If you have a problem with the internet, fork it. The research/education focused "Internet 2" is one example of this - still connected, but the backbones it runs on are independent.</comment>