Ask HN: Software for Creating an Affiliate Program? - <AUTHOR>

Hey,
I'm looking for some third-party software/service for offering an affiliate program for my product. The product/service I'm offering is irrelevant. Just to note, I'm not looking for a network to join. I want to offer the affiliate program myself.
Thanks for any info <comment><USER2> I don't have firsthand experience using this, but I happened to save the link. It sounds to me like it is what you are asking for:

<http://successnexus.com/>

<comment><AUTHOR> looks like they're still in beta...

got any others?

thanks

<comment><USER2> Sorry. That's the only one I happen to be aware of. Hopefully someone else will chime in soon.

Good luck.</comment></comment></comment>


Byte Me: Why you need to be *very* careful when choosing co-founders - <AUTHOR> http://www.riverfronttimes.com/2011-07-07/news/secureaxis-kalishman-elbring-network-security/ <comment><USER2> A year in prison for owing $24,000 in back taxes for a couple years sounds extremely severe. I mean, any criminal conviction at all for owing $24,000 to the IRS sounds extremely severe, but I get the circumstance of the plea deal. Still, though.

<comment><USER3> The prison time wasn't for back taxes, it was that he didn't file at all for the foreign company. Frankly 3 months isn't enough for tax cheating.

<comment><USER2> My guess is most people who owe back taxes haven't filed. It's not "tax cheating" not to file; it's "tax cheating" to file false returns.

I went a bunch of years without filing, racked up a pretty significant tax liability, and it was absolutely not a big deal to take care of it.

Years earlier, I did the same thing, but instead of having my accountant clear it up, the government noticed and just levied me. Again: not a big deal.

<comment><USER4> Same here. I failed big in the 2001 recession and it took me a couple of years to really believe it. I almost have the back taxes paid off now. The IRS really doesn't do the criminal conviction thing unless there's no other choice. It's expensive and doesn't really fix the problem - that they don't have their money. They'd much, much rather set up a payment plan.

Also, for anybody in that situation - talk to them. I've never had a bad experience talking to the IRS. Sure, it's scary admitting there's that much debt hanging over your head, but the earlier you get on it, the better. Way better.

<comment><USER2> I didn't even not file because of scary debt; I didn't file because I didn't give a s---. And they didn't either. Something else is going on in this story.

<comment><USER5> Hang on, so they don't pile on penalties and interest?

<comment><USER4> Yes. About a factor of two. It's not going to kill you.

<comment><USER5> Hmm... Doing the math.. Nope, would still be too expensive :-/

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> > He agreed to start a company with Elbring and invest an initial $500,000 > through his trust — in installments, to ensure certain benchmarks were > reached.

This kind of offer is generally a warning sign, btw.

<comment><AUTHOR> Josh may have something entirely different in mind but it is a bit of a red flag when an investor wants to tranche a small investment.

Part of the art of sizing your round is to do so in a such a way as to give you a nice bit of running room, but it's much harder to run if you always have to wonder whether there's a brick wall around the corner.

The investor is taking a certain amount of risk in making the investment. The way to minimize that investment is to support the team, make intros, execute, etc. Not dole out the cash a bit at a time like a crack dealer.

Also, the milestones are already built into the process. The seed round provides enough cash to get you past the first set of milestones. The series A enough to get you past the second. Etc.

<comment><USER6> No, you were correct.

(BTW: Joshua)

</comment></comment></comment><comment><USER7> 1\. Jail over 24K in back taxes? That's insane

2\. Getting sentenced to a medium security prison? I mean really, this is a big wtf...should have been light security...or better yet just house arrest

</comment><comment><USER8> Peripherally related: one thing I've learned is to never partner on a web site with someone who doesn't have a lot (and I mean dozens, if not hundreds) of people connected to him via sites such as LinkedIn or Facebook. If someone's claiming to have been working on Internet projects for years, and can't immediately point to a hundred or more people who are least willing to connect with them on Linkedin or something, there's something deeply fishy.

A great question someone once told me for talking to a potential business partner: "Who were your past business partners, and can I chat with them? Also, how well did they do relative to you on those deals?" If someone tells you that all his past business associates were crooks or liars, walk away.

<comment><USER9> now, I agree completely with your second paragraph. However, as for the first? the problem is that the more 'connections' you have on social networking sites, the more likely you just click 'accept' to all requests. A huge number of my customers, for example, request to be a contact. I mean, I guess that's somewhat legitimate, but if you pointed me at one of those random people without access to my customer database? I wouldn't be able to tell you who they were. I mean, I've had about 4000 customers (I mean, I don't currently have that many, but over the last five years or so, I've had about 4000.) So, I think < 100 contacts is fine, if the person is one of those folks who limits contacts to people they actually know and remember.

<comment><USER8> If someone's been in the industry for a decade (and wants to be an entrepreneur), or went to school less than 10 years ago, I'd be hard pressed to believe there's less than 100 people they know and remember who would want to connect via LinkedIn, etc. I'm a pretty crappy networker and I don't add connections on FB or LI to people I don't know, and I've still got over 1,000.... I don't think 100 is much to ask. And I'm not saying it's a dealbreaker, just something that might mean you should investigate further.

(To give a more concrete example, I once realized that someone claimed to have gone to a particular college, but didn't have a single person on either FB or LinkedIn from that school in their friend lists. Doesn't that seem a bit fishy?)

</comment></comment></comment><comment><AUTHOR> Like many who post here, I've often thought it would be cool to be able to go to a "Founder Match" type of site to identify possible co-founders.

What's interesting to me is that at once, this article speaks both to why a site like this SHOULD NEVER exist (you should really _know_ your co-founder) but also why it REALLY MUST exist (some kind of reputation score could have helped here).

<comment><USER10> I could see someone like pg starting it as a sort of HN-like venture, with no expectation of making money aside from making YC more prominent, but I can't see it as a startup. How much would you have to charge in order to be profitable? How big is your actual market? I just think it's a potentially useful service that would be _very_ difficult to build a company on.

<comment><USER11> At first blush, I'd say you have a very serious problem that you're trying to solve. That's always a good place for a startup to begin. In this one example, millions of dollars were lost and one founder did time in jail and is hundreds of thousands in debt. Hind-sight being 20/20, I'm sure these guys would pay $10k to avoid this mess (not to mention going after the potential upside of doing this business right).

The risk that I see is that the problem is a latent problem (i.e. one that founders are not aware of) rather than a realized problem. So, the people who understand your value proposition are already ruined and don't have the cash to pay you and the ones who have the cash and need your service don't know that they need your service.

<comment><USER10> Chicken and the egg. If you've got 10k in cash lying around, you've probably already found a cofounder and got funded. Even the people who save up before launching a startup aren't going to want to part with 10k just to find a cofounder, regardless of how good an investment 10k for the right cofounder may end up being.

The immediate problem of how to match people is also non-trivial. Reputation doesn't really work in the startup field, unless you're matching serial entrepreneurs, who probably don't need your service.

It's a real problem, and it'd be great if someone could solve it, but I just don't see a business in it. I'd be happy to be proved wrong, however.

</comment></comment></comment></comment><comment><USER4> I can't even read this. It radiates tawdriness.

</comment><comment><USER11> Also, why you need to be _very_ careful when filing tax returns. A good accountant is a god-send.

<comment><USER12> I don't really disagree, but in any other circumstance $24k in back taxes won't see the inside of a courtroom let alone lead to jail time. The IRS will typically just send a bill with some penalties and interest tacked on. The US Attorney realized he got pulled into the middle of a clusterfuck a little late and Elbring paid the price for pissing off well-connected people.

</comment></comment><comment><USER12> May this article give the attorneys at Lewis Rice many headaches. If I'm general counsel with a relationship to Lewis Rice I think I'd be looking for outside counsel that wasn't going to sell me out when I'm a little inconvenient.</comment>


Are Containers the Right Answer to the Wrong Question? - <AUTHOR> http://open.citrix.com/blog/328-are-containers-the-right-answer-to-the-wrong-question.html <comment><USER2> Before Linux adopted "Containers", jails were invented in FreeBSD (by yours truly) and they ran Linux Apps just fine, thankyou.

And SVR4 and SCO binaries too for that matter.

The idea that your kernel can only give you one syscall-API is so 1990-ish.

<comment><USER3> Linux was simpler to emulate back then, it has grown in complexity and the emulation has not kept up, although it does work for some use cases. Having worked on testing for the NetBSD Linux emulation (its getting better, didnt help having no tests) there is quite a lot missing (epoll for example is not yet emulated). FreeBSD still appears to only have 32 bit emulation which rules out most modern Linux apps.

<comment><USER4> What is it that makes "most modern Linux apps" not run on 32bit? Last I checked, pretty much all packages were available for both x86 and x64.

If you're talking enterprise use, sure, some app servers might need more than a few GB, but that's a memory problem, not strictly a bitness problem.

<comment><USER5> Well the idea of using mmap for large areas to simplify development can mean 32bit isn't usable even if the program doesn't need that much memory. It's about the address space in that case.

One program would spin up lots of threads, each with a 1MB stack, which was hardly used. It'd die on 32bit even with no real memory pressure.

Also, 32bit is less likely to get as much testing for server apps.

</comment></comment></comment></comment><comment><USER6> Interesting article mostly because it tells me that Containers are clearly getting traction (Citrix sees them as a threat to their business, so they declare they are not a threat to their business.)

That said, there are much deeper questions here than 'container good or bad?' Not surprisingly, they are nearly the same as 'compilers good or bad?' that were all the rage before.

So hypervisors and containers are the same two systems, hypervisors abstract to the hardware level and containers abstract to the OS level. By setting the level of abstraction they control what can be shared and what can't, and what differences can be accommodated in the same system.

At scale, efficiency is associative. Which is to say that you can be more efficient in your use of resources (higher utilization) when you associate similar abstractions together. You do that by maximizing the commonality. So if the only common thing is 'runs on x86 hardware' that is your common point. If its 'runs on Linux' (or Windows, or Solaris) as a common point then that you get some efficiency by running one copy of the OS and multiple processes in that OS. If the common point is 'Rails' or 'Go' then you can gain efficency by keeping hardware, OS, and software stack in common.

The further up the abstraction level you go, it loosens constraints on the bottom layers while increases them on the top layers (you have to write all your code in Rails, but you can run on x86-64 or ARM-64 architecture machines, versus you can write you code in any language/system that targets x86-64 hardware) Different organizations can dial that knob based on their ability to be flexible. So organizations with a lot of legacy binaries targeting x86-64 they really need hypervisors, but organizations where all of their code base targets Linux, they are much better off with containers. At a small scale the numbers are a toss up, at Google/Walmart scale the numbers become company controlling.

</comment><comment><USER7> And so the circle is complete:

TL;DR: this is timeshared mainframes all over again. I'll dust off my pipe and white technician's coat.

In the beginning there were batch run mainframes, and it was good.

And Lo!, did the bean counters notice thy ever under utilized CPU cycles. So became time sharing mainframes.

The masses rejected the cold noisy cave of the server room and so it was decreed that the terminal shall forever more be remote.

Thy ever indiscriminate shrink ray doth break the bonds of the mainframe, and set forth the world into mini computers. "Hark!" said the masses; we demand the Personal computer.

The masses were mollified, until the becoming of cheap internets. "But wait!?" they cried we require some sort of network computer.

Time passed, and a tower of babel was conquered by XML, JSON and eventually the cloud.

<comment><USER8> Hate to be "that guy", but that should read "And Lo! ..."

[http://english.stackexchange.com/questions/38741/use-of- and-...](http://english.stackexchange.com/questions/38741/use-of-and-lo-in-a- sentence)

<comment><USER7> much obliged.

</comment></comment></comment><comment><USER9> Virtualization is very good at handling consolidation of legacy systems. Which means that your 10 old servers, running various unix and windows versions and hardware whose spare parts are difficult to find, can be easily replaced by a single modern machine, usually not even particularly beefy by modern standards.

It solves a lot of problems in small to medium companies; it's an answer to a desperate call for help of sysadmins too tired to hunt 15 years old cpu fans on ebay, and managers hearing always the same infernal stories about what it's like to do anything down in the basement.

It solves the problem of the same small to medium companies having to buy new hardware for each application they buy, usually because the vendor tells them to do so. Many software started to get shipped as a whole OS stack, because that was easier for the vendor to support.

It solves many other problems, but let's stop here. These problems are going to stay, and so will virtualization.

However containers offer a way to isolate your environment so that they can survive longer and coexist better with other apps. If you build your environments using those building blocks, then after 10 years, you'll have a slightly smaller mess (which you can still handle with virtualization).

If you really have a lot of machines then, you need to have a good system for managing your hardware, for bulk installation etc. You have to manage new kernel and container management software rollouts in more or less the same way you'd need to manage hypervisor rollouts.

But since you have a lot machines, which means that you encounter hardware failure more often, the relatively higher frequency of kernel and container management software updates has still a smaller cost than virtualization overhead (provided you have enough machines).

Or put in another way, virtualization overhead is negligible if you're a small fish. It's cheaper for you to buy more machines or a stronger machines if all you need is to cover for that overhead.

<comment><USER7> As someone who battles legacy at scale everyday, Its rarely the platform that is the trouble.

For example, I have a nasty little calendar script that I have to move. The rest of the app is long dead, but this one little worm keeps on biting.

It uses regex to parse XML. (insert cuthulu joke here) its based on php5.old I need to move it to 5.new+secure. The OS has an update function that is know, tested, documented and works. I can install a new RPM/deb and be fairly sure it'll work if it installs

Standalone apps, in the way that people are building them wont. Conatainers rely on the underlying operating system for various things. Any exceptions are bundled with the app.

a true VM is free to be moved to a new host, a container is not. You are hamstrung to that machine and possibly that config.

So If you built the farm on docker, you're stuck with it, on that hardware. unless you want down time, or was to re-engineer things

<comment><USER9> > Standalone apps, in the way that people are building them wont. Conatainers > rely on the underlying operating system for various things. Any exceptions > are bundled with the app.

I don't understand. I assume that for "underlying operating system" you mean the OS that hosts containers. Unless you depend on some OS specific things like iptables or stuff like that, it should be trivial to rebuild a container (e.g. make a new docker image with a new php) and test it.

Containers are not so great if you migrate into container software that has not been packaged for containers in the first place. It's not that it won't work, but it's easy to find example where you could run into troubles.

The whole point of solutions like docker is to give you the consistent environment that will help you to test your changes in isolation.

> [...] The OS has an update function that is know, tested, documented and > works. I can install a new RPM/deb and be fairly sure it'll work if it > installs

Until you have a distro that's too out of date for that to work properly. The same thing happens if you use containers with too much of an "OS" in it. There is currently a lot of debate about what's the right balance between microcontainers or full fledged mini-OS inside a container. On one end of the spectrum you move your problem to container orchestration, while on the other you risk breaking the isolation abstraction provided by the container by running an OS that doesn't have full control on it's environment (e.g. kernel, disks etc) and thus breaking the guarantee that existing upgrade tooling will work flawlessly.

> a true VM is free to be moved to a new host, a container is not. You are > hamstrung to that machine and possibly that config. > So If you built the > farm on docker, you're stuck with it, on that hardware. unless you want down > time, or was to re-engineer things

That's true, only a VM will guarantee that an arbitrary legacy application can be moved to a different physical machine in face of arbitrary incompatible developments in the underlying hardware. Well, if you want to stretch that to the extreme, only a full emulator can guarantee that you will be able to run your legacy things on a completely different CPU architecture.

However, you must be aware that VM offer you a way to acquire a technical debt, which is great in that it allows you to decouple your immediate hardware upgrade needs from your software reengineering, but you must be aware that you'd have to pay off this debt.

I have a 15 years old mandrake linux VM with some legacy software. It's well known, tested and documented update system won't help me maintain the mess that's inside that VM.

</comment></comment></comment><comment><USER10> Also, containers don't do live migration. If you can transparently migrate VMs around your datacenter then you can consolidate VMs onto a few hosts to save electricity at night, spread them out during the day to maximize performance, or move them for scheduled hardware upgrades.

<comment><USER11> I know that live migration is possible but I'm curious how many people actually do this. I hear much more about spawning/culling VMs quickly, than I do about live migration.

<comment><USER12> Pretty much all day on busy clusters. VMware esx with DRS does this to rebalance resources.

</comment></comment></comment><comment><USER13> Wherein the author argues that requiring a single OS kernel for multiple containers is somehow more restrictive than MirageOS, which requires every application to be written in OCaml?

The overall concept is not without merit, the OSv site ([http://osv.io/resources/](http://osv.io/resources/)) has some more interesting material. I'll still be sticking with Docker though.

<comment><USER14> What's the big deal with OCaml ?

I found it to be a very nice, powerful, and enjoyable language.

<comment><USER15> "The big deal with OCaml" is that most people have tons of code that isn't written in OCaml.

Projects like MirageOS and ErlangOnXen are fantastic and I hope we see more of them, but getting to the point where these kinds of runtimes are viable for most people is a _long_ road.

<comment><USER11> They are viable for people starting afresh. Not everything that comes along _has_ to care about legacy systems so the advantage goes to those creating new tools/products/services with the advanced approaches. In fact, I'd argue that such step changes wouldn't be possible if we always had to be compatible. This is pretty much 'circle of life' stuff.

</comment></comment></comment></comment><comment><USER16> I think Unikernels are the next steps after the lightweight containers trend, in short an execution environment free of all the unused clutter an OS brings for just executing one application. [http://t.co/JRxG2RGRgp](http://t.co/JRxG2RGRgp) What do you think of this?

<comment><USER11> I completely agree and the workflow does away with the need for a vast number of configuration management tools too. Also, John Carmack also thinks they're "really interesting" [1] (the link in his tweet takes you to the academic paper). If you've used Unikernels for anything, I'd _really_ like to know about your experience. Please do get in touch with me (see profile).

Side note: Why use a Twitter short URL when the original [2] is pretty succinct anyway?

[1] [https://twitter.com/ID_AA_Carmack/status/476046680698003458](https://twitter.com/ID_AA_Carmack/status/476046680698003458)

[2] [http://queue.acm.org/detail.cfm?id=2566628](http://queue.acm.org/detail.cfm?id=2566628)

<comment><USER16> Hi Amir,

Thanks for your reply, don't have time to invest that much in unikernel, I just keep an eye on it. But the use case is very appealing to me and to you according to your writings on your blog :) I'll keep in touch if I investigate further the Unikernel way. Thanks for the John Carmack's tweet, very interesting, and a validation of our intuition by one of the greatest programmers :)

Side note : I sent the comment from my smartphone and the quickest way to retrieve the link to the ACM article on Unikernel is by browsing my twitter feed :) hence the twitter short URL

</comment></comment></comment><comment><USER17> I think "Erlang on Xen" is as well a nice example pointing in this direction.

In this case it is not a application though. It is a runtime environment... something in between a whole VM and a container?

[http://erlangonxen.org/](http://erlangonxen.org/)

</comment><comment><USER4> If you're one of the 0.01% whose app cannot run on Linux, or needs a very specific patched version of the kernel to run, then sure, I agree.

Who knows, maybe Citrix has something to sell that makes the author's opinion very "important"?

</comment><comment><USER18> Let's say that unless you are mega-provider, which trying to pack as many as possible those cheap low-resources (10 pages, 3 forms, 5 tables, 10 requests per day Rails or whatever is current buzzword) site into one piece of leased hardware the visualization is a wrong question.

Just apache's virtual hosts isn't good enough anymore, customers want Rails, Nodejs, Java for their $20/mo.

Virtualization for real-world production is nonsense, especially those idiotic setups like Java under Linux under VMWare under Windows (you wouldn't believe how many "professionals" are cock-sure that this kind of setup is "robust" and most stable.)

Jokes aside, Docker is eating VMWare's lunch being a fresh new meme promising miracles (yeah, problem of cache trashing and context switching for I/O in a host OS will surely be solved by someone else.

</comment><comment><USER19> This post is disingenuous. In particular:

      [Cloud Operating Systems] enable the vision of light and fast application servers, while preserving the superior security and flexibility of true hypervisors.

Hypervisors are only secure if you don't need any sharing. If you have two applications running as separate guests and they need to exchange data, then all of the security issues that you'd have on a normal OS return, but they are harder to solve, because the Hypervisor doesn't provide much support!

As an extreme case, consider running all of your applications on your Desktop in their own VM. Now, you are in your web browser and you download a Word document that you want to edit. Somehow, you have to transfer this document to the Word Processor VM to edit it (they have different file systems so you need to use something like scp). If, after you're done editing it, you need to send it to someone via email, then you'll have to copy it to the Email VM. It's not how to see how this seriously impacts usability!

When sharing is required, then a Hypervisor is not helpful. That's not to say that Hypervisors are useless, as the author claims his opponents say. Hypervisors are good for running different operating systems on the same hardware and they are good at isolating the different OSes from each other. However, once any sharing is required, hypervisors are not the right tools for the job.

<comment><USER11> I'm confused. What you're describing seems equivalent to just connecting a machine to the internet/network (ie you have security concerns). How many scenarios are there where you have two guests _on the same host_ that must communicate? Shouldn't those applications/VMs be architected in a way that you could simply move one of them to a _different host_ without breaking? I guess I'm confused about what you mean by 'sharing'.

Edit: As for your extreme example, I believe Bromium (ex-XenSource founders) is doing what you describe.

[http://www.bromium.com/products.html](http://www.bromium.com/products.html)</comment></comment>


Ask HN: Are thousands of Bay Area workers going to die in a big earthquake? - <AUTHOR> Looking at liquefaction maps of the Bay Area, it really seems like we're in for a huge disaster at some indefinite point in the future. Many buildings are very old, made of brick, and seem unlikely to survive a big earthquake.
1. Why is it that we have people working in San Francisco in buildings that we know will likely collapse in a large earthquake?
2. How is this legal? How are companies able to ignore the obvious safety implications of having people work inside deathtraps?
3. Will the families of workers get paid when workers are inevitably buried under tons of rubble?
4. Is there something workers can do to force their companies to provide earthquake life insurance and/or move out of unsafe buildings?
https://geomaps.wr.usgs.gov/sfgeo/liquefaction/maps.html <comment><USER2> Two points.

It's not so bad! And it could be really bad!

The not so bad case. The 6.9 Loma Prieta 1989 quake killed 63 people. 42 of those deaths were on the highway collapse. And since then we reinforced the highways and any building touched by construction in the last 30 years was seismically upgraded. Lots of property damage, but we've already paid for that with insurance and taxes. Btw SF's many wood frame buildings that lean against each other do quite well.

      Magnitude      | 30 year chance of one or more
      greater than

      7                51%
      7.5              20%
      8                4%

From:

[https://pubs.usgs.gov/fs/2015/3009/pdf/fs2015-3009.pdf](https://pubs.usgs.gov/fs/2015/3009/pdf/fs2015-3009.pdf)

The bad news is the 4% chance event. An 8 or (omg!) 9.0 earthquake. There are few buildings that would survive, some hospitals and data centers that are built to very high standards. (Like the datacenter at 365 Main for example, cool video here [1] about how that works. [2]).

Everything else is likely to be in really bad shape, with thousands of deaths and whole blocks leveled. Current standards don't go that high because it would be much too expensive. Imagine spending $5 million on every house and office building in San Francisco.

The other it-might-be-really-bad direction is that NY Times story below [3] points out that we don't really know how our new skyscrapers will behave even in 7.0 earthquakes, it seems quite possible that a few could fall over and wreck 2-3 blocks of other buildings.

Keep in mind that about 2,500 people die in car accidents every year in California. And that the 4% 8.0+ event only happens every 825 years.

So... not so bad! Could be really bad!

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

[2] [http://www.datacenterknowledge.com/archives/2009/04/14/quake...](http://www.datacenterknowledge.com/archives/2009/04/14/quake- proofing-an-entire-data-center)

[3] [https://www.nytimes.com/interactive/2018/04/17/us/san- franci...](https://www.nytimes.com/interactive/2018/04/17/us/san-francisco- earthquake-seismic-gamble.html)

<comment><USER3> The 1906 quake (the biggest in recorded CA history) was a touch under 8.0, and it killed 3000. But the majority of the damage from it was from fires, which are a much smaller danger nowadays. Building codes are better as well. I'd be surprised if an 8.0 got into the thousands.

A 9.0 quite simply won't happen in CA, because our fault lines aren't capable of generating that magnitude.

<comment><USER4> If you notice the red brick circles in various intersections around the city. One of the problems with the fires after a quake is that running water may not work anymore, so they installed these cisterns filled with water to try to make sure firefighting water was available if needed.

</comment></comment></comment><comment><USER5> When I started a software dev contract in a Southern California high-rise, I had to undergo 2 hours of earthquake safety training before I could start working.

I think it would be unusual for any Bay Area employer to require any earthquake safety procedures, despite a far higher potential for risk to life and limb.

Very few buildings will collapse in a Bay Area earthquake, but the number is not zero. Far more will be "damaged" and that may still involve plenty of lives lost.

San Francisco I'm not as worried about- the east bay and parts of the peninsula (esp. Foster City) would concern me more.

Best link I've found: [http://gis.abag.ca.gov/website/Hazards/?hlyr=liqSusceptibili...](http://gis.abag.ca.gov/website/Hazards/?hlyr=liqSusceptibility)

</comment><comment><USER6> I'm not sure how many brick buildings there actually are. (After the 1906 and 1989 quakes, the flimsiest buildings were knocked down.) San Francisco has fewer brick buildings than most major cities...

And it's also something people (including the government) are aware of and watching carefully. San Francisco retrofits its brick buildings -- over 2,000 by the year 2008 -- and it actually made headlines that there were 150 at that time which hadn't already been retrofitted.

[https://www.sfgate.com/news/article/150-S-F-brick- buildings-...](https://www.sfgate.com/news/article/150-S-F-brick-buildings- yet-to-be-reinforced-3278984.php)

</comment><comment><USER7> The New York Times recently did an article on the topic: [https://www.nytimes.com/interactive/2018/04/17/us/san- franci...](https://www.nytimes.com/interactive/2018/04/17/us/san-francisco- earthquake-seismic-gamble.html)

The short answer is that while a natural disaster is possible, the time frame between disastrous earthquakes is long enough for people to get by anyway. Builders do have a legal standard to follow, but whether that standard is safe enough is another question entirely.

Re insurance, many employers offer benefits packages that include basic life insurance coverage for employees, which would likely offer some compensation. YMMV.

</comment><comment><USER8> Just like in 1906, it won't be the earthquake that kills the most people but the resulting fires.

Think of the forest fires that burnt down Santa Rosa.

In a dense city like SF, it will only take the fire spreading to a few adjacent blocks before it overwhelms the fire departments ability to put it out and that will be it. SF will turn into Coffey park.

</comment><comment><USER9> Companies don't force people to come and work for them. People make that choice. As of earthquake protection in SF, unfortunately most of the owners don't have earthquake insurances because the premiums are ridiculous. In other words, companies might have earthquake protections in SF if they own their office buildings. Otherwise, not sure it's their responsibilities.

</comment><comment> brian-armstrong I mean, things aren't really that different from when the Loma Prieta hit. Most of the people who died in that earthquake were on the bridge when it happened. It caused a lot of property damage and injuries but not many fatalities.

<comment><USER10> That was a magnitude 6.9 earthquake. For context, it has been speculated (source: [https://www.newyorker.com/magazine/2015/07/20/the-really- big...](https://www.newyorker.com/magazine/2015/07/20/the-really-big-one) ) that the next "really big one" could be in the range of 9.0.

> If the entire zone gives way at once, an event that seismologists call a > full-margin rupture, the magnitude will be somewhere between 8.7 and 9.2. > That's the very big one.

I'm not well-versed in earthquakes, but from what I know the Richter magnitude is logarithmic in scale, I can't really even imagine in my head what a 9.0 quake is like.

I'm glad OP / someone is asking these questions, I often wonder about this myself, being a tech worker in San Francisco.

<comment><USER11> This is for the PNW. The Bay Area is south of that. We won't be hit by one that big. "The big one" here will be an 8, not a 9.

</comment></comment></comment><comment><USER12> Yes and thousands of Bay area workers can also die from Alien attack.</comment>


Lisp Hackers: Slava Akhmechet - <AUTHOR> http://lisp-univ-etc.blogspot.com/2012/10/slava-akhmechet-published-several.html

<comment><USER2> This guy also wrote great articles about Haskell and Erlang on defmacro.org. I wonder why they don't use any of that in RethinkDB.

</comment><comment><USER3> was on here a few hours ago <http://news.ycombinator.com/item?id=4697530>

<comment><AUTHOR> Hmm. Because of that horrible thing Blogspot does where they change the domain suffix depending on the user's location.

I'd delete the post if it had gotten any discussion before, but since it didn't, let's leave it for now.

<comment><USER3> I usually do a quick check (search) before submitting to make sure that i don't "repost" anything.

Anyways: No big deal

 _And yes, let's leave it on. I also "upvoted" :)_</comment></comment></comment>


Ask HN: Do you vote? - <AUTHOR>

Why or why not? <comment><USER2> Nope.

Looking at the historic turnout and voting patterns, regardless of who I supported there would be no point voting. It won't make a difference.

I'd only turn out if there was a specific local issue on the ballot which had a chance of going one of two ways.

Democracy under FPTP is largely a fiction to keep people inline. It MIGHT be useful to avert a civil war, but anything less than that and it only serves to provide people the illusion of choice.

<comment><USER3> At an individual level voting doesn't seem to make much of an impact, but the whole point of voting is that it's a group activity.

Washington state has legal pot. Texas has strict abortion laws. The reason the laws of a state reflect the beliefs of the populous is due to voting. The fact that seniors vote in high numbers, while college students vote in low numbers, is why universities get budget cuts but social security is sacred.

The idea that voting doesn't make a difference is a fiction.

<comment><USER4> Statistically none of that is true for the majority of the country.

<comment><USER3> Can you please refute my point then? If not due to voting, why do areas with a liberal population enact liberal policies and areas with a conservative population enact conservative policies? I'm honestly curious to know what you think...

</comment></comment></comment></comment><comment><USER5> I vote. However, for particular positions like judges, I won't because I am not educated. I spend a lot of time researching propositions and candidates. If all the candidates look the same, I won't vote. I also won't vote on the "lesser of two evils".

<comment><AUTHOR> What resources do you use for your research?

</comment></comment><comment><USER6> I have voted in every election that I have been eligible for (almost 30 years of voting now).

I consider it an obligation as a citizen to express my preferences, though I'll admit that I often get frustrated with our elected governments. I try to make the vote my own thing, I have usually supported a minor party with limited opportunities for government but some electoral wins at the candidate level.

Electoral campaigns are usually a circus that I have come to avoid, I think the important thing is to interact with people at an individual or small group level all the time not just during elections.

And if voting seems like a waste (or even if it seems valuable), go do something else to make things better. Arlo Guthrie once pointed out that if we lived in a perfect world it would be impossible to improve things but in a world that sucks "you don't have to do very much at all! There's never been a time in the history of the world when you could do so little and have it mean so much to so many people!"

And always be testing and adjusting your beliefs based on evidence and knowledge. You might find that people's beliefs are usually more complex than what you'll find on the news or on a political website.

</comment><comment><USER7> No. Neither side of a shit sandwich seems appetizing.

<comment><USER8> Then why not register your disdain by voting blank?

<comment><USER2> > Then why not register your disdain by voting blank?

Because then someone somewhere will use the turnout % as a way to legitimise whoever is in charge e.g. "X got voted in with a 80% turnout." Whereas if only 10% of the population turn up, no matter who wins they have no legitimacy or mandate.

<comment><USER8> If you get a 80 % turn out and only 10% cast a vote for a candidate then I think that would send a much stronger message. It clearly differentiates between the case of just too lazy to bother and of genuine disdain for the current options.

</comment></comment></comment></comment><comment><USER9> Yes, for goods and services - with my money.

<comment><USER7> Dig. This actually affects policy too, considering its for sale to the folks who end up with our money for their goods or services.

</comment></comment><comment><USER10> If you want to submit a poll, use this:

[https://news.ycombinator.com/newpoll](https://news.ycombinator.com/newpoll)

</comment><comment><USER11> I would if I could, but the privilege of voting is a fickle thing and we Americans are easily stripped of it.

</comment><comment><USER12> No. I understand statistics.

</comment><comment><USER13> I often upvote quality comments, yes.</comment>


Fuchsia Rust Crates - <AUTHOR> https://fuchsia.dev/fuchsia-src/development/languages/rust/crates <comment><USER2> Here is is the "Fuschsia Programming Language Policy" that was here some time ago [https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master...](https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/docs/project/policy/programming_languages.md)

</comment><comment><USER3> Anyone knows if this project is going to translate into a real world OS deployed on commercially available devices, one day ?

<comment><USER4> I don't have a source off hand, but I believe it's already been confirmed that Fuchsia is powering Google's Home Hubs.</comment></comment>


The Great Pacification (review of Steven Pinker's new book) - <AUTHOR> http://www.nytimes.com/2011/10/09/books/review/the-better-angels-of-our-nature-by-steven-pinker-book-review.html?_r=1&nl=books&emc=booksupdateema2&pagewanted=all

<comment><AUTHOR> The detail I found most interesting from the review:

 _If the average teenager today could go back in time and take an I.Q. test from 1910, he or she would have an I.Q. of 130, which would be better than 98 percent of those taking the test then._

<comment><USER2> The detail you mention is called the Flynn effect. Here is a link to a lecture by James Flynn, the discoverer of the Flynn effect, on the implications of that research.

[http://www.psychometrics.cam.ac.uk/page/109/beyond-the- flynn...](http://www.psychometrics.cam.ac.uk/page/109/beyond-the-flynn- effect.htm)</comment></comment>


Why ISPs shouldn't ban MAC addresses - <AUTHOR> http://shenglong.posterous.com/why-isps-shouldnt-ban-mac-addresses

<comment><USER2> I think this article misses the point.

Yes, MAC addresses are not to be trusted. They can be easily changed. However, the corollary to "you shouldn't blacklist MAC addresses" is "you shouldn't whitelist them either." Great, you just threw out DHCP, and are going down the network access control blackhole. (802.1X supplicants for everybody!)

Most ISPs don't put multiple clients in a layer-2 domain, you can't trust it. So, most ISPs already don't trust MAC addresses, nor do they care.

On a college campus, things are different, and locking down the network can only go so far technologically. You need technical measures and good communication to cover 98% of the users (IDS, automatic quarantine systems, simple registration), accommodation for the 1.9% of technically inquisitive/advanced users (forums, workarounds for edge cases), and a big stick for the remaining 0.1%.

When I was at WWU, they ran a very liberal network. You could change your MAC address (as long as it wasn't taken from another user), you could run your own WiFi (as long as you took responsibility for it), you could run servers, and almost no protocol was banned (although it might be throttled.) But use someone else's credentials or interfere with the functioning of the network? Stick time.

Sounds like the problem at this school is bad communication, and not having a holistic network management system. Not surprising: they're both hard, and most schools don't invest the time with any serious effort.

... and don't get me started on the campuses that ban IRC.

</comment><comment><USER3> Absolutely have to send a message to your network administrator, but can't find her? Target several local hosts (this works quicker with an IDS in the mix) with xmas packets, and place your message in the body. Send 'em once every five seconds or so, preferably in the afternoon when they should be awake. If that doesn't seem to get anyone's attention, start a rogue DHCP server which issues DHCPOFFERS with "Oy, why is 05:23:a3:bb:40 banned? --room 201" in the message field.

If they're worth their salt, the network admin will see it light up in their packet dump, and resolve any problems you're having. With fire.

<comment><USER4> "xmas UDP packets" does not compute... Xmas only has meaning in the context of TCP.

<comment><USER5> What are xmas packets?

<comment><USER6> a packet with all options "lit up". like sending a tcp packet with SYN, FIN, PSH and URG all set.

</comment></comment></comment></comment><comment><USER7> That's a whole lotta words to say "Because they can easily be spoofed".

<comment><USER8> But it was a fun story, and you'll remember it better now, probably :)

</comment></comment><comment><USER9> Banning MAC addresses is a must for large univerities (and probably any large network where you have frequent guests and do not have employer/employee power relations).

Yes you can change your MAC address. But this type of policy is in place in order to stop misconfigured machines or malware ridden machines from connecting to the network.

<comment><USER10> Still, at least it's an improvement on the system my university network imposed, which required pre-registration of your MAC address for your assigned room port. Any other MAC detected would immediately block the port at the switch level (and require a helpdesk call, and up to 3 days wait) to fix.

It taught me some useful things about the linux system init process, and where to stick the mac spoofing setup call though, so not a total loss

</comment></comment><comment><USER11> Sure you can spoof MAC's but most people won't, so it's an easy solution that works for most incidents. No telling why you are getting banned over and over, but if it's for a legitimate reason that you're unaware of you're certainly not going to be getting much understanding by the time an ops person has had to figure out what's going on and manually turn off the port.

</comment><comment><USER12> Sounds like his system has been tripping an IDS and being flagged for malware. Changing the MAC address (which, in some environments, is a violation of the Acceptable Use Policy) will just result in the new MAC address being banned as well, if that is the case.

</comment><comment><USER13> Years ago I worked for the ResNet team at Purdue University and some of the items in the story were similar. I can relate to the posters pain but I've also been on the other side.

We had an entirely automated system to temporarily block users who exceeded their bandwidth limit. When that happened we brought down the port on the switch. If they moved to a different port we brought it down as well. If they had changed their MAC they would have to associate it with their username (using our home grown NAC) and then we would block them then.

As for support we had standard hours for a helpdesk staffed by students.

</comment><comment><USER14> has the author, who appears to read hn and hopefully therefore this, considered that the reasons for the apparently automatic ban might be malware on the machine?

<comment><AUTHOR> Yes I have. However, I don't frequent any dangerous sites much, and my computer it's terribly vulnerable. I've done full scans with MWB and AVG, and I've checked my data in/out rates.

<comment><USER15> Try hooking your computer up through a hub or something and use WireShark on your traffic. You never know on a Windows box. I've had deeply rootkitted machines that didn't get picked up by any scans.

In any case, I'd recommend against changing your MAC address because when you do get a hold of the network admins they may be rather disgruntled that you're violating network policy (almost any university that registers MACs prohibits MAC spoofing, otherwise you could just use the MAC of somebody that you saw on a different subnet).

</comment></comment></comment><comment><USER5> Have you considered escalating this past the engineers, and to the Dean of your school?

Alternatively, if you could find out _his or her_ MAC address...</comment>


Ask HN: Is there any guarantee that my phone's camera isn't spying on me? - <AUTHOR> The same question can be applied to the microphone.
I am actually curious if there are reports about phones taking pictures of their owners without their consent to be used in ML models or anything like that.
It seems to be something that Google and Apple could do without much effort and without the user noticing. <comment><USER2> Apple has status bar indicators for if an application is using the microphone or camera from a background process and when tapping the indicator the OS will try to bring it to the foreground so that you know which one, or if it cannot for some reason it tries to prompt you with the name and asks if you want to disable the app's access.

If your threat model includes Apple themselves it's not guaranteed that first party apps have to use the same privacy-respecting APIs, and Face ID (which does require consent) indeed has a very different UX model for when it is active (lock icons and overlay checkboxes versus status bar microphone/camera icons and red warning indicators).

For what little it is worth, though, it certainly feels like Apple is sincere enough in their "Privacy-focused" endeavors, that I currently don't consider Apple in my personal threat model, but as always that's a subjective judgment at best.

</comment><comment><USER3> Currently there is no way to tell, a solution to this problem would be by default the camera is physically covered and the microphone is physically disconnected by default. In order to record you would have to physically flip a mechanical switch to uncover the camera and physically flip a switch to connect the microphone.

Even with physical switches to uncover the camera(s), and connect the mics, there is still the possibility that the other sensors in the phone might be able to detect the sound vibrations that the accelerometer and gyroscope are picking up.

This is the same concept of some electronics that you may technically have pressed the power button, but it if it is physically plugged in and has no physical switch to connect/disconnect power there is still power flowing through it (e.g. car battery, servers, speakers, monitors, switches, routers, etc).

If they have passive sensors in them they do not require power in order to fully function and with phones having a battery they could potentially still record data even though you powered it off if there is still residual power running through any components that can record data (e.g. like a black box in cars and helicopters, boats and other vehicles).

<comment><USER4> Purism is doing this: hardware kill switches

<comment><USER3> I would prefer devices with true mechanical switches that control power, and are disconnect/cover recording capabilities to guarantee what is expected is actually happening.

<comment><USER5> You imply that purism has software switches but I believe they are hardware switches.

My purism laptop has two hardware kill switches for camera and wifi. The switches remove the devices from the circuit.

<comment><USER3> Nice that they are doing this, but this really should be standard for the majority of electrical devices you buy similar to high end receivers, speakers, microphones, amps, etc. with the powered on/off switch in the back. Once you flip it, there is zero power going through it until you flip it again. This was a huge savings with many high powered equipment that you needed to leave plugged in, but did not want it to drain unnecessary power while idling.

</comment></comment></comment></comment></comment><comment><USER6> So this new phone I bought (oppo reno) has the front camera which needs to slide up to use. Although makes face identification unlock slightly slow(i don't use that), but I guess addresses your concern.

</comment><comment><USER7> Android Pie is directly addressing this: [https://developer.android.com/about/versions/pie/android-9.0...](https://developer.android.com/about/versions/pie/android-9.0-changes- all)

Notably: "Android 9 limits the ability for background apps to access user input and sensor data. If your app is running in the background on a device running Android 9, the system applies the following restrictions to your app: Your app cannot access the microphone or camera."

</comment><comment><USER8> No, there's no guarantee. It comes down to trust.

You could use a privacy slide on your cameras, but you'd still have to worry about the mic and that brings a whole other sets of complications.

<comment><USER9> That's why a lot of people are talking about Librem 5 by Purism

</comment></comment><comment><USER10> There isn't a guarantee, but there are incentives for phone/platform providers to avoid spying on you in a battery-powered device. Battery life is still a primary selling point, and these companies are fighting hard to maximize battery life on your device. Turning on the camera is among the most power- hungry tasks, as it activates the image signal processor block of your SoC (which is millions of gates and a high speed transfer interface). It would be difficult to produce a competitive device which spies on its users.

</comment><comment><USER11> Short answer: no.

Long answer: nooooooooooooooooo.

</comment><comment><USER12> An interesting concept could be for future devices to have a light wired into the hardware of your camera and microphone, so you know when either of them have power, period. Someone trying to remotely activate either device would have no way to hijack the hardware covertly.

</comment><comment><USER13> Likely no need for the pictures. People store enough photos in Google Photos on their own.

</comment><comment><USER14> I use some nice products from these guys: [https://objective- see.com/products/oversight.html](https://objective- see.com/products/oversight.html)

</comment><comment><USER15> about a year ago, everytime I took a panorama picture, right after I took it, xPrivacy would pop up and warn me that google play services was attempting to do something and asking to allow/deny. I always denied and it didnt bother me until one day xPrivacy just went silent. It simply stopped reporting any issues and worse still reinstalling/restarting did not help. I will not detail what evasive actions I took thereafter but suffice it to say anytime I take a picture on the phone, I assume google will have it eventually.</comment>


Intermediate summary of Heilman et al. claims about security of IOTA signatures - <AUTHOR> https://medium.com/@comefrombeyond/intermediate-summary-of-heilman-et-al-add87228efab <comment><AUTHOR> Also from IOTA foundation statement:

"Whether intentional or not, DCI's report and subsequent refusal to follow proper disclosure procedure have caused misinformation about IOTA to continue circulating on social media. The latest round of attacks on Twitter attempts to undermine our recently announced corporate relationships — we find these attacks equally reprehensible. There is a reason why following proper disclosure protocols is so important, and we can only speculate as to why DCI refuses to comply.

We have spent much more time than we intended to on discussing this issue ad nauseum, and we would like to put it to bed. However, we can't do that without help from the DCI team. To that end, we propose the following:

We hereby formally request DCI to complete the proper disclosure protocols: we call on Ethan, Neha and their team to release any and all code, documentation, research, etc., they have developed in conjunction with their findings.

If DCI are unable or unwilling to release all of the aforementioned documents, we call on them to retract their report fully and issue a brief apology, after which we will drop the subject entirely with no harm done.

If DCI do clarify and disclose their results fully, and a substantial and legitimate vulnerability is found, we will happily eat a slice of humble pie. We will own up to our mistake and apologize for it, thank them for helping us to improve the IOTA protocol, and reiterate our offer of a bounty reward as a token of our gratitude."

[https://blog.iota.org/official-statement-regarding-the- mit-d...](https://blog.iota.org/official-statement-regarding-the-mit-dci- email-leaks-ea3cacd6699a)</comment>


Why Bike Lanes Could Be Good for Cars - <AUTHOR> http://www.citylab.com/cityfixer/2014/09/when-adding-bike-lanes-actually-reduces-traffic-delays/379623/

<comment><USER2> Url changed from [http://gizmodo.com/the-surprising-reason-why-bike-lanes- coul...](http://gizmodo.com/the-surprising-reason-why-bike-lanes-could-be- good-for-1631152746), which points to this.</comment>


Major DNA Testing Company Sharing Genetic Data with the FBI - <AUTHOR> https://www.bloomberg.com/news/articles/2019-02-01/major-dna-testing-company-is-sharing-genetic-data-with-the-fbi <comment><USER2> Discussion from 3 days ago: [https://news.ycombinator.com/item?id=19057643](https://news.ycombinator.com/item?id=19057643)

</comment><comment><USER3> For what it's worth, the official statement from the company: [https://blog.familytreedna.com/press-release-connecting- fami...](https://blog.familytreedna.com/press-release-connecting-families-and- saving-lives/)

</comment><comment><USER4> I'm surprised this wasn't known already, it seems like a no-brainer for the FBI to pool forensics data from other entities.

There probably needs to be some sort of international standard on handling genetically identifiable data.</comment>


Scrub values in JavaScript live - <AUTHOR> http://nornagon.github.com/scrubby

<comment><USER2> Very cool. Just wanted to mention that we've had the same capability in the Khan Academy CS environment for a few months now:

<http://www.khanacademy.org/cs/gear/1178931559>

Read John Resig's blog post for more details: <http://news.ycombinator.com/item?id=4382076>

<comment><USER3> Yes, playing with values and seeing the graphical result change is an excellent way of getting the intuition for taught material.

I came across this example ([http://www.khanacademy.org/math/statistics/e/exploring_mean_...](http://www.khanacademy.org/math/statistics/e/exploring_mean_and_median)) from Khan Academy that helps students understand mean and median of a data set. (There are exercises for other summary statistics too.)

</comment></comment><comment><USER4> This is very impressive and cool. However I really don't think that parsing source code and manipulating is a very maintainable way to do this (and this as someone who writes Clojure for a living).

You could do exactly the same using very simple Knockout. It wouldn't be as funky, but it would be something you'd be happy to use in production.

<comment><AUTHOR> It isn't really intended for production use. Personally, I plan to use it to tweak values in games I write, because having to alt+tab, find, edit, alt+tab, refresh, restore state for every tiny tweak to the position of a UI element sucks.

This is a development tool :)

<comment><USER4> Can you go into more detail?

<comment><USER5> I would highly recommend watching this, and keeping in mind how such a thing could be useful in games.

<http://worrydream.com/#!/InventingOnPrinciple>

For a concrete example of usefulness in games, see

<http://www.youtube.com/watch?v=-32SFFbaeJg>

<comment><USER4> It would be useful to give a pitch as to why I should watch it - it's an hour long.

<comment><USER6> Because it's an awesome lecture and well worth a good hour of your life. Trust us on this one, but it's your loss if you don't. :)

</comment></comment></comment></comment></comment></comment><comment><USER7> Interesting implementation! I'm using CodeMirror tokens and regexs to make numbers scrubbable and hex colors pickable: <http://tributary.io/tributary/2958568/>

I've been wanting to explore the route you took more, especially for doing even more code modification. I'd like to let users click on a number and turn it into a variable, or have a special object where members are added to the global table. You can then create controls external to the code with that table and hide the code (good for presenting after you're done coding). Looking forward to checking out your code!

my project: <http://tributary.io>

</comment><comment><USER8> I forked your code and implemented one of your todos: Added the ability to input values when double clicking a scrubber.

<https://github.com/nornagon/scrubby/pull/1/files>

<comment><AUTHOR> Awesome! I'll check it out soon :D

</comment></comment><comment><USER9> Nice! Just a thought, values can go beyond the valid range. For example: dividing by zero, having negative values for RGB, and negative height/widths.

<comment><AUTHOR> Unfortunately there's no type information in JS, so it's very difficult to extract range data from just the source. Just don't drag it into that range ;)

PS, I'm planning to implement a color picker for strings like 'rgba(200,0,234,0.4)'

<comment><USER10> How does scrubby know the alpha value is real-valued (not integral)?

<comment><AUTHOR> [https://github.com/nornagon/scrubby/blob/master/scrubby.coff...](https://github.com/nornagon/scrubby/blob/master/scrubby.coffee#L62)

</comment></comment></comment></comment><comment><USER11> Does anyone know if there is a similar editor component for Gtk, QT or Wx ?

EDIT: Ideally for python.

</comment><comment><USER12> It doesn't work in Firefox 19.

<comment><AUTHOR> Should be fixed now.

</comment></comment><comment><USER13> What would be the use cases for this, other than education?

<comment><AUTHOR> I plan to use it to tweak values during game development, so I don't have to edit/reload every time I tweak a number a tiny bit.

</comment></comment><comment><USER14> Very clever.</comment>


Ask HN: What if all code was suddenly open source? - <AUTHOR> There's this sort of thought experiment that's been in the back of my mind for the past few weeks.
Imagine every technology company, government, programmer, etc. is notified that all code that has ever been written is now going to be open source, licensed under the MIT license. Furthermore, new code will instantly be open sourced and MIT licensed as well.
Even if all of your code is served in an intranet and has no connection to the WWW, it doesn't matter, your source-code is now publicly available and easily accessible (read-only to the public). Don't worry about the cost or logistics; some perfect public entity with enough resources will be hosting it.
This, for some reason, is just accepted as the new reality. Private corporations like Amazon, for example, are now forced to play in this new competitive landscape of transparent, free software.
How do you think this would affect technology and the way we develop it? Do you think this would harm or improve society? What would the short term and long term changes look like?
Edit: Clarifying some of the language <comment><USER2> I can't make sense of what this means.

Are my HTML and LaTeX documents code? What if I practice literate programming and interweave my manuscript and the code? Are both released under the MIT license?

The appendix of Cryptonomicon includes a perl script. Is the original manuscript therefore source code? Or only the executable code part?

What about a video game where the engine reads external data files, and it's the data files which specify the level. (Eg, wad files and DOOM.) Are those data files also "code"?

A Game of Life engine can take an array of 0s and 1s as inputs. Including from a 1-bit image file like one in PBM format. Are those image files under the MIT license? Are all PBM files under the MIT license because they could be used as input? Remember, the Game of Life is Turing complete.

It's surprising just how many things are accidentally Turing complete - [http://beza1e1.tuxen.de/articles/accidentally_turing_complet...](http://beza1e1.tuxen.de/articles/accidentally_turing_complete.html) .

Tools like fuzz checkers can generate billions of source code tests. Are those all archived?

If I have my computer generate millions of variations of my source code, will this "perfect public entity" store all of them? How is it indexed? Because it seems one way workaround is to make it hard to find the source code needle in the haystack of false leads.

<comment><AUTHOR> Wow this is amazing, thank you for the link. I never knew about this.

</comment></comment><comment><USER3> The patent lawyers would have a field day. I remember reading somewhere this may be one of the reasons that linux video drivers weren't open source by nvidea and/or AMD some years ago.</comment>


On Bazel and Open Source - <AUTHOR> http://julipedia.meroh.net/2015/04/on-bazel-and-open-source.html <comment><USER2> Blaze is the one thing I miss the most from Google. However Blaze is very heavy for most small open source projects as the article says so the startup cost is too high.

I think there is probably room for a blaze-lite that relaxes a few of the restrictions blaze requires and is written in an easier to deploy language. Go perhaps?

The build rule language and the correct dependency specification and tracking are the most important pieces to have in my opinion. You could drop the expectation that all the dependencies including the compiler toolchain are in the source repo without losing too much.

<comment><AUTHOR> waf [1] is very close to what you describe.

It's all Python. It's built so you can include one Python file in your source tree and install nothing but Python.

A relatively small core handles dependency tracking and shuffling flags from the user to tasks. I can't believe how fast it is, considering it is reading the files and computing hashes.

While user scripts have access to all of Python, you can limit yourself and write rules in a high level build rule style that's only slightly more Pythonic than Bazel, et al. Basically it's bld.program(source=['main.c'], use=['foo']) or bld(features='c cprogram', source=['main.c'], use=['foo']) instead of cc_binary(srcs=['main.c'], deps=[':foo']).

Adding rules can be done in various ways, including genrule-style shell commands, registering a task class by file extension, and a very flexible system of registering methods to hook into the "features" attribute.

With surprisingly little work, you can layer your own build language on top of the core modules. Demos are provided that parse makefiles or generate rules by searching the source directory with no user script [2].

Relative to the OP's concerns, a configure step is required and can search the system, call pkg-config, write config.h, etc. Arbitrary command line options can be added by shared tools and user scripts. Install, dist, and distclean are all there.

[1] - [https://waf.io/](https://waf.io/)

[2] - [https://github.com/waf- project/waf/tree/master/build_system_...](https://github.com/waf- project/waf/tree/master/build_system_kit)

</comment></comment><comment><USER3> FWIW Facebook's Buck and Twitter's Pants are both inspired by Blaze, i.e. have Blaze-like syntax:

[https://buckbuild.com/](https://buckbuild.com/)

[https://pantsbuild.github.io/](https://pantsbuild.github.io/)

AFAICT, both are written in Python, which is a more palatable dependency than Java. Hm actually Buck is mostly Java, with a Python buck.py program.

<comment><USER4> Another build system that came out of Google, particularly the Chromium project, is GYP ([https://code.google.com/p/gyp/](https://code.google.com/p/gyp/)). GYP is also used by Node.js, which wraps it in a conventional-looking configure/make procedure. I wonder how similar GYP is to Blaze.

<comment><USER3> Well GYP stands for "generate your projects". And I think it has actually been replaced by the "gn" build system, which does look a bit like Blaze, but with non-Python syntax.

I think GYP is more like a build system generator than a build system. It was more like autoconf (although quite different semantically). The original goal was to generate Visual Studio and XCode projects. And it also generates Ninja files.

Blaze/Bazel is not as portable, since it doesn't do Windows.

</comment></comment></comment><comment><USER5> > Java is also a really annoying dependency to have in a project. Java virtual > machines are not particularly known for their portability: the "build once, > run anywhere" motto has always been a fallacy. By using Java, one closes the > door to pretty much anything that is not x86 or x86-64, and anything that is > not Linux, OS X nor Windows. Support for Java on other operating systems or > architectures is never official and is always unstable for some reason or > another. Heck, even most interpreted languages have better runtime support > for a wider variety of platforms!

I guess the OP needs to update his Java knowledge.

Out of my head without searching the Internet, I am aware of JVMs for Aix, HP- UX, Solaris, GNU/Linux, Windows, OS/400, z/OS and their respective processors.

Not counting the amount of hardware vendors offering commercial JVMs like IBM, Atego, Aicas, IS2T

Which sums it up to x86, x86-64, ARM (including Cortex ones), MIPS, PowerPC, RX and a few others.

But lets just bash Java for brownie points.

</comment><comment><USER6> As an older and more cynical person, hard to be impressed by Yet Another Build system. Build systems just keep coming, one after another. New stuff, such as a new or different programming language or OS, is typically fun stuff. Another build system is never fun stuff. Please yell at me (have poor hearing) when you find a logical, useable build system that is fun.

FWIW, have used autotools, but mostly use scons.

<comment><USER7> A lot of build systems focus on trying to make it "easier" to define a build, and invariably that notion comes with a certain naiveté about what is needed for a build.

Build systems are never fun, agreed. That's not the point. The point of Bazel is having one that is correct and efficient. That makes a huge difference, though not with the same out-of-box-experience as the "easier to use" build systems.

We'll see where this goes, but I'd encourage you to recognize the difference in what is being attempted here (admittedly, not for the first time, but this design has a pretty established track record... note the comments here of people actually _missing_ the Google build system).

<comment><USER6> Will suppose that bulk of you people are corporate minions doing desktop or web stuff. At home and at work do 'deeply' embedded code. Assembly and C, with some Python honey poured on top to fill in the cracks. So perhaps it is a POV thing - huge company stuff done by several programmers vs small little black box stuff done by one or two EEs.

But a good tool, however mundane the task, will always be fun. This is my second Law of Engineering.

<comment><USER7> > So perhaps it is a POV thing - huge company stuff done by several > programmers vs small little black box stuff done by one or two EEs.

It absolutely is a POV thing. There is a reason why Make wasn't implemented with the features and design objectives of Bazel.

> But a good tool, however mundane the task, will always be fun. This is my > second Law of Engineering.

A good tool will always be fun where "good" is based on your criteria, which is based on your context.</comment></comment></comment></comment>


Innovation thoughts on success - <AUTHOR> https://andrewstannard.com/inniovation-a19fde37c1f4#.yexa54eia <comment><AUTHOR> My company has just won the Queens Award for Innovation here are my reflections on how we innovate

<comment><USER2> Congratulations. Being American, I was unfamiliar with it.

[https://en.wikipedia.org/wiki/Queen's_Awards_for_Enterprise](https://en.wikipedia.org/wiki/Queen's_Awards_for_Enterprise)</comment></comment>


Ask HN : Which PHP Framework to prefer? - <AUTHOR>

I haven't got any previous experience in PHP frameworks, and at the moment due to some project I am being forced to use one.
I has always been between Yii and CodeIgniter.
Please help me out which one to prefer, and is easier to learn. <comment><USER2> I've just migrated to SlimFramework for one of our biggest projects. It is all I could want in a framework: it provides routes, basic structuring, middle ware, views, and leaves the rest up to you. This made it super easy to switch, as I can use my own ORM and was able leave most of the structural logic intact.

The slim framework docs are perfect, the code is clear and the forums are great. I especially like that it doesn't force you to do everything in one predefined way, making the learning curve nice and low

</comment><comment><USER3> Kohana is a very solid framework.

The best parts about it are that the source is very readable and it's extremely easy to override the default behavior of many modules. I would strongly recommend doing this as much as you need to because Kohana's defaults may not make sense for your usecase. The biggest downside is that v3 is very different from v2 and a lot of the documentation and help still assumes v2 (this is why easy to read source code is important.

</comment><comment><USER4> Laravel for sure, it is very readable, it's one of the fastest. I have to say more importantly, it is very enjoyable to code in. Check it out: Laravel.com

I am using it for my current project, I have only experienced it for about a month I think :)

</comment><comment><USER5> I've always used CI. I know a lot of people tend to look down on it, but it's easy to use and suited my needs. Can't you install both Yii and CI and decide which one you like best?

<comment><USER6> The biggest problem I have with CI as a specific application framework is the insistance of being extremely backwards compatible (PHP 4 support was dropped less than a year ago, and they only very recently stopped supporting 5.1). I understand why this makes sense for Ellis Labs (the developers of it) since Expression Engine is designed to be deployed by clients. If you're picking a framework to use, pick one that allows you to take advantage of all the improvements made to the language (PHP 5.3/5.4 bring a huge number of improvements over even 5.2). I also have a number of fundamental disagreements with how CI is built - no proper autoloading system, a weak routing system (no URL helper/parameter mapping), no request/response objects, odd controller instation and library/model loading (generally fairly disconnected from standard OO design)

If you want a full featured framework, Symfony2 is a good everything including the kitchen sink although it's a bit more Java-esque (which make sense since much of PHP's OO design is based on Java). <http://symfony.com/>

For something lighter weight, Silex is based on the Symfony2 components, so it's super easy to pull in more components as you need them. <http://silex.sensiolabs.org/>

Even if you're not using Symfony2 it's really modular and easy to integrate with other frameworks - we're running CI as our base framework due to legacy reasons, but all of our new work leans heavily on Symfony2 components.

</comment></comment><comment><AUTHOR> I too am hearing extremely good stuff about Kohana, but I have a lot of people against not fully complete Kohana Documentations. Also Kohana is said to be quite similar to CI.

</comment><comment><USER7> I have a co worker who used Yii, it looks very rails-like and doesn't look like it would be that hard to learn.

</comment><comment><USER8> I would say Zend Framework not the easiest to learn but very well structured and reliable.

</comment><comment><USER9> ModX is good if you can write your own PHP without difficulty.</comment>


Ask HN: What do you have configured in your .emacs? - <AUTHOR> I am relatively new to emacs and would like to see others example and maybe notes on anything 'interesting' they would like to share.<p>thank you in advance! <comment><USER2> Some modes I like:

      - use-package: Download & enable all packages automatically on new machines.
      - super-save-mode: Save files whenever focus changes
      - projectile: Switch bt. projects, open files in a project
      - helm: Better find file, M-x etc.
      - cider: For Clojure
      - ag: Integration with ag, bound to f3
      - magit: better git
      - golden-ratio: So that current buffer is larger than the other buffer automatically
      - writeroom-mode: For focusing on text with large margins
      - turkish: Write Turkish with English keyboard and have diacritics applied automatically

Some shortcuts:

s-e -> opens my emacs config so that I can make modifications faster.

      (bind-key "s-e"
         (lambda ()
           (interactive)
           (find-file "~/.emacs.d/init.el")))

Zoom In/Out:

      (bind-key "M-=" 'text-scale-increase)
      (bind-key "M--" 'text-scale-decrease)

Full Screen (bind-key [f11] 'toggle-frame-fullscreen)

Also I try keep emacs config in a single file (~/.emacs.d/init.el), I tried using multiple files, but it is not worth the effort being that "tidy".

<comment><USER3> You also like the package bind-key EDIT oh, included with use-package. I'm going to use it now along with your zoom bindings. Thanks.

</comment></comment><comment><USER4> I wrote mine in markdown, with comments and explanation:

[https://github.com/skx/dotfiles/blob/master/.emacs.d/init.md](https://github.com/skx/dotfiles/blob/master/.emacs.d/init.md)

When emacs launches a simple `~.emacs.d/init.el` file parses that markdown, building up all the code-sections into a temporary buffer, then evaluates them. Pretty neat.

</comment><comment><USER5> Pretty generic, though I've ended up configuring it to launch in ~0.5 seconds: [https://github.com/lynlevenick/dotfiles/tree/master/emacs/.e...](https://github.com/lynlevenick/dotfiles/tree/master/emacs/.emacs.d)

</comment><comment><USER6> Here is a post by Steve Yegge about his, written way back when glaciers covered most of North America: [https://sites.google.com/site/steveyegge2/my- dot-emacs-file](https://sites.google.com/site/steveyegge2/my-dot-emacs-file)

</comment><comment><USER3> TypeScript-oriented setup: [https://gitlab.com/brlewis/brlewis- config/blob/master/emacs/...](https://gitlab.com/brlewis/brlewis- config/blob/master/emacs/startup.el)

</comment><comment><USER7> [https://duckduckgo.com/?q=example+dot+emacs&ia=web](https://duckduckgo.com/?q=example+dot+emacs&ia=web) leads to dozens of great examples . Are you looking for anything in specific?

<comment><AUTHOR> Looking to see if HN users have anything unique

</comment></comment><comment><USER8> Have a look at curated list of notable emacs dotfiles – [https://github.com/caisah/emacs.dz](https://github.com/caisah/emacs.dz).</comment>


Cisco Must Be Held Accountable for Aiding China's Human Rights Abuses - <AUTHOR> https://www.eff.org/press/releases/eff-court-cisco-must-be-held-accountable-aiding-chinas-human-rights-abuses <comment><USER2> It seems clear Cisco knew their systems were going to be used against Falun Gong. Leaked Cisco presentation:

"Cisco Confidential 57 © 2002, Cisco Systems

The Golden Shield Project:

Public Network Information Security Monitor System

• Stop the network-related crimes

• Guarantee the security and services of public network

• Combat "Falun Gong" evil religion and other hostiles

[Note: Statement of Government goals from speech government offical Li Runsen]"

Then again it's going to be hard to show legally they were doing much more than helping China enforce it's laws. Still at least the embarrassment factor may put companies off from getting involved in this stuff.

I hope the EFF case makes them release documents related to it.

<comment><USER3> Falun Gong is an evil litigious cult created in 1992 as a way to raise money for the founders and cult leaders.

They're unscrupulous, including promising terminally ill cancer patients the possibility of healing if they just redirect their remaining wealth toward the cult.

They're the Chinese equivalent to Scientology, but even worse. Their teachings are racing, homophobic, sexist and misogynistic. They preached that UFOs had arrived on earth; aliens had taken over human bodies, and were trying to annihilate humanity through the control of TV and radio.

See: [http://www.cultnews.com/2010/10/falun-gong-is- good/](http://www.cultnews.com/2010/10/falun-gong-is-good/)

<comment><USER2> Wikipedia doesn't make them sound so bad - "three central tenets of the belief are Truthfulness (真, Zhēn), Compassion (善, Shàn), and Forbearance"

The troubles seem to stem from "April 1999, when over 10,000 Falun Gong practitioners gathered peacefully near the central government compound in Beijing to request legal recognition and freedom from state interference."

I guess peaceful demonstrations against the state are going to get you tiananmen squared over there.

<comment><USER4> I would not rely on wikipedia for politically controversial information.

<comment><USER5> And I would not rely on the Chinese state to be a neutral source of information on anything at all.

</comment></comment></comment></comment></comment><comment><USER6> Governments of the world have to care about human rights abuses before someone with teeth can prosecute. I sincerely doubt anyone in power (elected, appointed, hired) in any government cares at all about random humans at distance. Especially if caring would affect their own quality of life.

<comment><USER7> Its how you sell it, we could claim that it Cisco Systems is selling technology to a hostile government with the aim of subverting American hegemony. Which FYI, is exactly what it did.

<comment><USER8> You forget they probably put in a few NSA chips and "bugs" before shipping it. So ...

</comment></comment></comment><comment><USER9> Glad this is finally coming to light. Every time I would mention it here that Cisco has built backdoors in its routers specifically to aid the Chinese government and later other governments as well, I would get downvoted. Cisco standardized the "lawful intercept" protocol for routers at the IETF, people! What did you think that meant?!

The US government (hopefully after it elects a saner president) and other supposedly democratic countries as well, need to come together and 1) make it clear that you can't _sell_ tools which you _know_ are being used for mass censorship and mass surveillance that then leads to torture or assassinations and whatnot (I know, this definition will need to be cleaned up a bit), and 2) punish the companies that still disobey those rules severely. It's time for the democratic countries to act the way they say they are.

<comment><USER10> Obama is insane now ?

<comment><USER11> Well to be fair, the NSA is still doing its thing. This makes it hard to criticise China for doing similar things.

<comment><USER10> That's not the same as "insane" though is it.

</comment></comment></comment></comment><comment><USER12> Okay hold the US government for aiding in Saudi Arabia's human rights abuses.

I don't know whether to cheer for things like this, though I do support works for improving human rights. For the most part they seem to be drops in the ocean of human rights abuse. And I don't know if it's doing anything to stop those abuses or just a control mechanism to make us feel like we are accomplishing something... while the biggest abusers and their supporters continue scot-free.

<comment><USER13> Human rights theater is better than no attention paid to human rights at all.

In particular the Helsinki Accords, which seemed empty when signed, seemed to wind up being influential a decade or so later. I've been sympathetic to human rights theater ever since.

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

</comment></comment><comment><USER14> It's not the people who provide goods who should be prosecuted but the people who carry out the actual bad who must be held to account. On the other hand, China [or any country with baddies, perh including our own] is a sovereign government and beside some economic pressure I don't know there is much more we should be able to do. Unless Cisco violated some commercial embargo or egregiously violated export law, etc.

<comment><USER15> That's how evil things happen. This phenomena is called diffusion of responsibility[0] and lead to some of the most evil actions in human history.

0\. [https://en.wikipedia.org/wiki/Diffusion_of_responsibility](https://en.wikipedia.org/wiki/Diffusion_of_responsibility)

<comment><USER14> Do you think the eff should make moral judgments on its donors and only accept donations from morally acceptable people? Maybe it should be their responsibility to ensure their income only comes from people with whom they are morally compatible. And alternatively donors ensure that principals and associates of the eff are also moral.

<comment><USER15> Sorry, I don't see how that's relevant. EFF does no evil (as far as I'm concerned), but let's hypothetically say, if one day we found out that EFF helps some foreign government to repress their people, sure everyone supporting EFF now should feel morally obligated to stop their funding.

<comment><USER14> Your interpretation is off. I'm asking, what if some of their donations come from people or governments who are misogynists, racists, tax cheats, etc. Should the eff figure out the "dirtiness" of the moneys they receive as the eff is asking Cisco to eval the morality of one of the sources of their income.

<comment><USER16> This is not about Cisco receiving money but about Cisco helping to do 'bad things'.

<comment><USER14> Is there material difference between actively helping and passively helping? If the Cisco product is but one in the chain which enables them to carry out morally disagreeable deeds, why choose Cisco out of the bunch? Do we go after OSS devs, MS, Apple, etc? All these products are on the chain of enablement.

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> OK EFF, you convinced me, I'll donate.

</comment><comment><USER18> I'm strongly in support of holding cisco accountable for this in any way, shape or form possible.

....but if we do that, where will we get routers with backdoors for us.gov from?

</comment><comment><USER19> who the fuck are you EFF, why are you stirring up so much trouble, and who pays you?

<comment><USER20> I donate to them, as do many people who believe that they are doing good work overall.

<comment><USER21> Reference: [https://news.ycombinator.com/item?id=10861391](https://news.ycombinator.com/item?id=10861391)

</comment></comment></comment><comment><USER22> It is in cases like this that I remember all those stupid code of conduct trainings that companies like Cisco make their employees go through.

</comment><comment><USER23> Bernard Williams in his criticism of Utilitarianism imagined a scenario where a scientist is torn between feeding his family by helping develop an evil weapon, and refusing the offer knowing full well that the place will be filled by someone else anyway.

Even if Cisco walked away from such deals, there would Chinese companies willing to fill their place. The Party developed hydrogen bombs and spaceships to stay in power. There seems to be little reason why they wouldn't do this themselves, if Cisco didn't play along.

Actually, I would rather a company like Cisco that's partially under US jurisdiction and media scrutiny to do all the nasty work for the Party than an anonymous Chinese company doing the same thing.

</comment><comment><USER24> While I do think human rights are a good idea, the focus seems to be carefully selected to as to make "bad" countries look bad and western countries look good. For the US, it's OK to kill people as long as you do it a bit randomly in a war instead of being too targeted, or as long as you do it to foreigners not your own citizens and you try to kill them quickly instead of using deliberate torture. If you do use torture, it should be psychological (solitary confinement) rather than physical. It's also OK to kill people by leaving them in an unsafe environment surrounded by killers (poor neighborhoods) without providing enough security or enough income to buy their way out. It's also OK to kill them in the name of economic progress by allowing cars to drive at speeds which regularly cause death. Somehow we accept these things as tolerable or even necessary but we don't realize that classic "bad country tortures dissidents" human rights abuses are equally necessary - they do the same thing wars do - secure the positions of governments against people who want to take them over. Even the name "dissident" is misleading - If we called Falun Gong members "traitors", that might make them sound like bad people and engender less public sympathy.

Cartoon about our patriotic biases: [http://www.washingtonsblog.com/2015/03/glorious-leader- wicke...](http://www.washingtonsblog.com/2015/03/glorious-leader-wicked- despot.html)

That said, it doesn't stop human rights abuses being wrong too.

<comment><USER25> _It 's also OK to kill them in the name of economic progress by allowing cars to drive at speeds which regularly cause death._

That's a very bizarre statement, but very telling of why you would defend authoritarian regimes.

<comment><AUTHOR> It also completely ignores the fact that local and state governments in the US regularly try to reduce speed limits which often leads to higher accident and fatality rates.

<comment><USER26> I'm not disputing your comment, but can you provide a citation for this? I did a quick google but the only reference I could find was a report (editorial?) in the Wall Street Journal called "Highways are safe at any speed".

<comment><AUTHOR> Not off hand, but there's been articles that hit the front page of HN about it.

</comment></comment></comment></comment></comment><comment><USER27> I can't believe this is happening today. I know that ideologies use humans to build organizations and do battle with each other, but I thought we were past the Stalinist purges and atheist totalitarianism. This makes anything the US does to Muslims pale in comparison. How does China grant freedom of religion to five religions only?

</comment><comment><USER28> I'm Chinese and I have no idea what "douzhung" means. (It doesn't even seem to be valid pinyin.) Can somebody enlighten me and tell what the Chinese characters are?

</comment><comment><USER29> Don't blame the sword, blame the holder.

<comment><USER30> Swords cannot think. Cisco executives can.

<comment><USER31> That point could be argued.

</comment></comment></comment><comment><USER32> So should you since that device you are reading this on was most likely sourced there. Likely sourced by underpaid workers in virtual enslavement to Foxconn or some other component manufacturer. Not to mention living in a toxic environment so we can all have our electronic toys.

<comment><USER24> Do you have a reference for "virtual enslavement" to Foxconn? Last I heard, people were lining up to get jobs there and with enough working hours, the pay was higher than what a university graduate makes. If you call paying people so much they don't want to leave "enslavement" then perhaps that's right, but it also means it's not really bad.

<comment><USER32> [http://www.cnet.com/news/riots-suicides-and-other-issues- in-...](http://www.cnet.com/news/riots-suicides-and-other-issues-in-foxconns- iphone-factories/)

<comment><USER33> Foxconn employs nearly a million people. You are going to get quite a few suicides no matter what you do. Their suicide rate is below the China population average.

<comment><USER21> Not just the Chinese average: during its worst year (2010), the rate was lower than in all 50 US states.</comment></comment></comment></comment></comment>