Introducing Cloud Spanner, a Global Database Service - <AUTHOR> https://cloudplatform.googleblog.com/2017/02/introducing-Cloud-Spanner-a-global-database-service-for-mission-critical-applications.html <comment><USER2> Congratulations to the Spanner team for becoming part of the Google public cloud!

And for those wondering, this is why Oracle wants billions of dollars from Google for "Java Copyright Infringement" because the only growth market for Oracle right now is their hosted database service, and whoops Google has a better one now.

It will be interesting if Amazon and Microsoft choose to compete with Google on this service. If we get to the point where you have databases, compute, storage, and connectivity services from those three at equal scale, well that would be a lot of choice for the developers!

<comment><USER3> Amazon's Aurora databases seem to be solving the same problem, and are MySQL or Postgres compatible to boot.

<comment><USER4> It is not close to equivalent. But I do want to get a better feel for if Google really has figured how to do basically the impossible. I want to see if this truly scales horizontally but of it does then competitors better hope for a much more detailed paper :)

<comment><USER5> > It is not close to equivalent.

It's equivalent, with different (unknown) constraints. Aurora is specifically for scaling workloads in the same way. You can say it's horizontal (machine) over vertical (resource) but it's all a matter of accounting.

The big nono is the Spanner pricepoint. I will stick with Aurora for scaling based on traffic I use, over pricey timeslices.

You would have to have quite a load to justify the switch from cheaper de jour solutions right now (AWS). Relying on the few that do, is a risk.

</comment></comment></comment></comment><comment><USER6> Really a CP system but with the Availability being five 9s or better (less than one failure in 10^6)

How: 1)Hardware - Gobs and Gobs of Hardware and SRE experience

"Spanner is not running over the public Internet — in fact, every Spanner packet flows only over Google-controlled routers and links (excluding any edge links to remote clients). Furthermore, each data center typically has at least three independent fibers connecting it to the private global network, thus ensuring path diversity for every pair of data centers. Similarly, there is redundancy of equipment and paths within a datacenter. Thus normally catastrophic events, such as cut fiber lines, do not lead to partitions or to outages."

2) Ninja 2PC

"Spanner uses two-phase commit (2PC) and strict two-phase locking to ensure isolation and strong consistency. 2PC has been called the "anti-availability" protocol [Hel16] because all members must be up for it to work. Spanner mitigates this by having each member be a Paxos group, thus ensuring each 2PC "member" is highly available even if some of its Paxos participants are down."

<comment><USER7> > with the Availability being five 9s or better (less than one failure in > 10^6)

Anyone know how exactly this is defined for them? (Time? Queries? Results?)

<comment><USER8> Well, this is what the spanner website says if you read the fine print:

>> This feature is not covered by any SLA

So I would guess that you don't get _any_ guarantess. Not five nines and not even one nine.

<comment><USER9> Currently yes, but that's because it's in Beta.

</comment></comment></comment></comment><comment><USER10> The team here at Quizlet did a lot of performance testing on Spanner with one of our MySQL workloads to see if it's an option for us. Here are the test results: [https://quizlet.com/blog/quizlet-cloud- spanner](https://quizlet.com/blog/quizlet-cloud-spanner)

<comment><USER11> What's the SQL and wire compatibility level? MySQL?

EDIT: Found quite a bit of my answers in your linked article:

> Cloud Spanner uses a SQL dialect which matches the ANSI SQL:2011 standard > with some extensions for Spanner-specific features. This is a SQL standard > simpler than that used in non-distributed databases such as vanilla MySQL, > but still supports the relational model (e.g. JOINs). It includes data- > definition language statements like CREATE TABLE. Spanner supports 7 data > types: bool, int64, float64, string, bytes, date, timestamp[20].

> Cloud Spanner doesn't, however, support data manipulation language (DML) > statements. DML includes SQL queries like INSERT and UPDATE. Instead, > Spanner's interface definition includes RPCs for mutating rows given their > primary key[21]. This is a bit annoying. You would expect a fully-featured > SQL database to include DML statements. Even if you don't use DML in your > application you'll almost certainly want them for one-off queries you run in > a query console.

> Though Cloud Spanner supports a smaller set of SQL than many other > relational databases, its dialect is well-documented and fits our use case > well. Our requirements for a MySQL replacement are that it supports > secondary indices and common SQL aggregations, such as the GROUP BY clause. > We've eliminated most of the joins we do, so we haven't tested Cloud > Spanner's join performance.

This seems like it'd prevent any kind of easy switch over to Spanner.

<comment><USER12> Just to be clear, the JOINS were removed for the vertical sharding prior to looking at Cloud Spanner. Cloud Spanner fully supports complex JOINS of many times (e.g. INNER, OUTER)

Details - [https://cloud.google.com/spanner/docs/query-syntax#join- type...](https://cloud.google.com/spanner/docs/query-syntax#join-types)

Disclaimer: I work on Cloud Spanner

<comment><USER11> Sorry for the confusion but I meant the DML portion.

<comment><USER13> It sounded like you can only modify by primary key? Can you make a transaction that contains a query and a bunch of updates by PK ?

And yeah it makes it sound like writing an OEM adapter will be much more difficult.

<comment><USER14> From reading the docs, the answer seems to clearly be yes, but I'm open to being corrected.

</comment></comment></comment></comment></comment></comment><comment><USER15> This release shows the different philosophies of Google vs Amazon in an interesting way.

Google prefers building advanced systems that let you do things "the old way" but making them horizontally scalable.

Amazon prefers to acknowledge that network partitions exist and try to get you to do things "the new way" that deals with that failure case in the software instead of trying to hide it.

I'm not saying either system is better than the other, but doing it Google's way is certainly easier for Enterprises that want to make the move, and why Amazon is starting to break with tradition and release products that let you do things "the old way" while hiding the details in an abstraction.

I've always said that Google is technically better than AWS, but no one will ever know because they don't have a strong sales team to go and show people.

This release only solidifies that point.

<comment><USER16> Amazon: Create usual services and sell them.

Google: Make unique products that push the boundaries of what was previously thought possible.

Amazon: Don't care about inefficiencies and usage. Inefficiencies can be handled by charging more to the clients, usage doesn't matter because the users are mostly the clients and they don't feel their pain.

Google: Had to make all their core technologies efficient, performant, scalable and maintainable or they couldn't sustain their business.

<comment><USER17> Not fair.

Amazon: IaaS

Google: PaaS

Amazon is philosophy is being 'close to the metal' to allow Enterprise customer to migrate 'regular apps' into a 'regular environment' in the cloud.

Most of Google's offerings are (at least were) novel, but proprietary ways of doing specific things.

Amazon is not a laggard: they have provided a number of interesting and useful 'helper' things to facilitate IaaS - as well as a number of 'pure cloud' type things.

Amazon is very, very customer focused. Their products come from customer demands.

Google often 'cool things they've done internally' and exposes them, hoping that they might have some use-case in the rest of the world.

Google and Amazon are equally interested in profit.

<comment><USER18> Google is IaaS, their PaaS offering (App Engine) never gained much traction AFAIK. I also find the comparison fair, Google is a software engineering company, Amazon is a sales/marketing company.

<comment><USER19> At what point do infrastructure services become the platform? IMO, between GKE, Spanner, BigQuery, etc., it's basically a PaaS for non-trivial applications.

<comment><USER18> [https://cloud.google.com/docs/compare/aws/compute#iaas_compa...](https://cloud.google.com/docs/compare/aws/compute#iaas_comparison)

</comment></comment></comment></comment></comment></comment><comment><USER20> Some interesting stuff in [https://cloud.google.com/spanner/docs/whitepapers/SpannerAnd...](https://cloud.google.com/spanner/docs/whitepapers/SpannerAndCap.pdf) about the social aspects of high availability.

1\. Defining high availability in terms of how a system is used: "In turn, the real litmus test is whether or not users (that want their own service to be highly available) write the code to handle outage exceptions: if they haven't written that code, then they are assuming high availability. Based on a large number of internal users of Spanner, we know that they assume Spanner is highly available."

2\. Ensuring that people don't become too dependent on high availability: "Starting in 2009, due to "excess" availability, Chubby's Site Reliability Engineers (SREs) started forcing periodic outages to ensure we continue to understand dependencies and the impact of Chubby failures."

I think 2 is really interesting. Netflix has Chaos Monkey to help address this ([https://github.com/Netflix/SimianArmy/wiki/Chaos- Monkey](https://github.com/Netflix/SimianArmy/wiki/Chaos-Monkey)). There's also a book called Foolproof ([https://www.theguardian.com/books/2015/oct/12/foolproof- greg...](https://www.theguardian.com/books/2015/oct/12/foolproof-greg-ip- review-biggest-risk-is-safety)) which talks about how perceived safety can lead to bigger disasters in lots of different areas: finance, driving, natural disasters, etc.

<comment><USER21> > perceived safety ... driving

I became a way better winter driver when I started intentionally fishtailing in snow and ice (in low risk situations).

<comment><USER20> There's also research showing that removing safety features, e.g. white lines between opposing lanes, increases safety.

[http://www.bbc.com/news/uk-35480736](http://www.bbc.com/news/uk-35480736)

</comment></comment></comment><comment><USER22> I wonder how this will affect adoption of CockroachDB [1], which was inspired by Spanner and supposedly an open source equivalent. I'd imagine that Spanner is a rather compelling choice, since they don't have to host it themselves. As far as I know, CockroachDB currently does not support providing CockroachDB as a service (but it is on their roadmap) [2].

[1] [https://www.cockroachlabs.com/docs/frequently-asked- question...](https://www.cockroachlabs.com/docs/frequently-asked- questions.html)

[2] [https://www.cockroachlabs.com/docs/frequently-asked- question...](https://www.cockroachlabs.com/docs/frequently-asked- questions.html#does-cockroach-labs-offer-a-cloud-database-as-a-service)

<comment><USER23> (Cockroach Labs CTO here)

Google launching Spanner is generally a positive thing for our industry and our product. It's more proof that what we're aiming for is possible and that there's demand for it. We expect that in five years, all tech companies will be deploying technology like ours.

One of the big differences is that Spanner only uses SQL for read-only operations, with a custom API for writes. We use standard SQL for both reads and writes, which means we also work with major ORMs like GORM, SQLAlchemy, and Hibernate (docs should be live today or tomorrow). Spanner's custom write API will make it difficult to work with existing frameworks, or to convert an existing application to Spanner.

Cloud Spanner only works on Google Cloud and is a black-box managed service. CockroachDB is open source and can be run on-prem or in any cloud on commodity hardware. (We don't offer CockroachDB as a service yet, but may in the future)

At this point, both products are still in beta and are still missing features like back-up and restore (according to the Quizlet blog post). We plan to launch CockroachDB 1.0 with back-up / restore enabled.

* For anyone wanting to know more about how we make CockroachDB work without TrueTime, see our blog post: [https://www.cockroachlabs.com/blog/living-without-atomic-clo...](https://www.cockroachlabs.com/blog/living-without-atomic-clocks/)

<comment><USER24> Would Cockroach 1.0 comply with SQL:2011?

<comment><USER23> (CockroachDB CTO here) We haven't implemented everything in the standard yet (Nor will we by 1.0 - there's a lot of stuff there!), but we are aiming to ultimately be compliant with the SQL standard. For example, when we introduced "time travel queries" ([https://www.cockroachlabs.com/blog/time-travel- queries-selec...](https://www.cockroachlabs.com/blog/time-travel-queries- select-witty_subtitle-the_future/)) we adopted the SQL-standard syntax "AS OF SYSTEM TIME" (as opposed to the non-standard out-of-band parameter used in Cloud Spanner)

</comment></comment></comment></comment><comment><USER25> For those trying to compare this with AWS Aurora, Aurora is more a regular database (MySQL / Postgres) engine with a custom data storage plugin that's AWS/ELB/SSD/EFS-aware. Because of this the database engine can make AWS specific decisions and optimizations that greatly boost performance. It supports master-master replication in the same region, master-slave across regions.

Global Spanner looks like a different beast, though. It looks like Google has configured a database for master-master(-master?) replication, across regions and even continents. They seem to be pulling it off by running only their own fiber, each master being a paxos cluster itself, GPS, atomic clocks and lot of other whiz-bangery.

<comment><USER25> From the technical blog post

> Does this mean that Spanner is a CA system as defined by CAP? The short > answer is "no" technically, but "yes" in effect and its users can and do > assume CA. The purist answer is "no" because partitions can happen and in > fact have happened at Google, and during some partitions, Spanner chooses C > and forfeits A. It is technically a CP system. However, no system provides > 100% availability, so the pragmatic question is whether or not Spanner > delivers availability that is so high that most users don't worry about its > outages. For example, given there are many sources of outages for an > application, if Spanner is an insignificant contributor to its downtime, > then users are correct to not worry about it.

Basically, the underlying system is CP, but A is so high (because of the custom fiber, paxos etc) that they're rounding it off to 100% and calling it CAP.

<comment><USER26> Except that A in CAP has nothing to do with overall system's availability over time and using it as such is just confusing.

<comment><USER25> But it makes sense in this case. The system guarantees CP. But as customer it looks like you're getting CA as well, because A is so high. If you drink the kool-aid, you get C & A & P.

The kool-aid isn't too bad, though if they can measurably guarantee A > 99.999999%, I'm happy to round off to 100% and call it CAP.

<comment><USER27> The availability is "only" 99.999%, which IMO is still really high!

(I work for Google Cloud)

<comment><USER8> Where does it say that? Does google cloud spanner guarantee three nines uptime?

On the spanner page it says:

>> This feature is not covered by any SLA

;) ;)

<comment><USER27> Once Cloud Spanner leaves beta, it will be covered by an SLA. GCP Alpha/Beta products don't have SLAs for the most part.

</comment></comment></comment></comment></comment></comment></comment><comment><USER28> The white paper is available here: [http://static.googleusercontent.com/media/research.google.co...](http://static.googleusercontent.com/media/research.google.com/en/us/archive/spanner- osdi2012.pdf)

for anyone interested

<comment><USER28> Oh and the newer white paper from today: [https://cloud.google.com/spanner/docs/whitepapers/SpannerAnd...](https://cloud.google.com/spanner/docs/whitepapers/SpannerAndCap.pdf)

<comment><USER29> I bet there will be a lot about CAP theorem in the comments:-)

</comment></comment></comment><comment><USER30> I wonder why they charge a minimum of $0.90 per node-hour when they offer VMs for as little as $0.008/hr. This is hugely useful even for single-person startups, so why charge a minimum of ~$8,000 per year?

<comment><USER31> Concur. The pricing makes sense for their "target market" of folks who currently have a "bursting at the seams" MySQL or PgSQL instance, but it locks out folks just getting started with a tiny database and low load. This seems like bad positioning: the "bursting" folks will have to decide between the cost of re-hosting their whole system on the Cloud Spanner and trying to incrementally keep their current platform running; the small folks who would like to organically grow on a platform without scaling limits are locked out of the low end, so by the the time they are big enough to need Cloud Spanner... they too with be forced into the "re-host or muddle on" decision.

<comment><USER32> This seems like a real problem. The "bursting at the seams" people will need a pretty significant rewrite to run on Spanner, which seriously limits the appeal.

The ideal market for Spanner seems to be new projects developed by big companies that know that big traffic will arrive on day 1. In other words, Google. Which I guess shouldn't be too surprising...

</comment></comment></comment><comment><USER33> Amazon likes to respond to Google with it's own price drops and product launches. It's telling that their announcements are orthogonal instead of direct competition with Spanner.

When Google announced Spanner back in 2012, I'm sure Amazon and Microsoft started teams to reproduce their own versions.

Spanner is not just software. The private network reduces partitions. GPS and atomic clocks for every machine help synchronize time globally. There won't be a Hadoop equivalent for Spanner, unless it includes the hardware spec.

<comment><USER34> Amazon already has Aurora: [https://aws.amazon.com/rds/aurora/details/](https://aws.amazon.com/rds/aurora/details/)

You're right that there's literally nothing else out there that has tight synchronization using atomic clocks, though.

<comment><USER16> Aurora is a toy compared to Spanner.

Single region, limited backups and replication topologies, limited performances.

There is yet to see if Spanner can achieve the expectations, if it does, it's a game changer.

<comment><USER33> > achieve the expectations

It has for Google internally. No reason why they can't share the service externally.

<comment><USER35> Actually, there are lots of reasons why it's hard to share a service externally. Making a service public means you have to deal with lots of new problems like billing, abuse, dealing with lots of small users instead of a few large ones, stronger backwards compatibility requirements and so-forth.

<comment><USER33> Yes, but those are orthogonal to the scaling issues that I presume user5994461 was thinking of.

<comment><USER35> That's kind of the point, when you make a service like Cloud Spanner public you create _new_ scaling dimensions. New scaling dimensions means new problems to solve that are not trivial.

</comment></comment></comment></comment></comment></comment></comment><comment><USER36> Thomas Watson in 1943 amd his famous quote: "I think there is a world market for about five computers".

If he was alive, he could say these computers are Google, Apple, Microsoft, Amazon and Facebook.

<comment><USER37> I beat you by 7 years :)

[https://arstechnica.com/civis/viewtopic.php?f=21&t=1109206](https://arstechnica.com/civis/viewtopic.php?f=21&t=1109206)

<comment><USER36> You win :D

</comment></comment></comment><comment><USER38> How does this compare to AWS Aurora in terms of pricing and performance?

With Aurora the basic instance is $48/month and they recommend at least two in separate zones for availability, so it's about $96/month minimum. Storage is $.10/GB and IO is $.20 per million requests. Data transfer starts at $.09/GB and the first GB is free.[1]

Spanner is a minimum of $650/mo (6X the Aurora minimum), storage is $.30/GB (3X), and data transfer starts at $.12/GB (1.3X).

Of course with Aurora you have to pick your instance size and bigger faster instances will cost more. Also there's the matter of multi-region replication, although it appears that aspect of Spanner is not priced out yet. So maybe as you scale the gap narrows, but it's interesting to price out the entry point for startups.

[1] [https://aws.amazon.com/rds/aurora/](https://aws.amazon.com/rds/aurora/)

<comment><USER33> Aurora replicas appear to be read-only, according to that link.

<comment><USER38> Sure, but to compare accurately we should look at where that impacts performance in practice. How many writes can Aurora's largest instance handle? What's the write latency from other parts of the globe?

</comment></comment></comment><comment><USER39> Forgive my ignorance, but could someone explain in layman's terms in which situation this would be helpful? E.g. if I have 1TB of data would I use this? If I have 1GB with a growth rate of 25GB/daily would I use this?

<comment><USER40> The rule of thumb I have always been told is that you can push MySql to ~200 GB total and between 99.9% and 99.99% availability (between 1 and 9 hours of downtime per year). Your milage might vary, but these are probably the right orders of magnitude. There is also an iops limit but that's harder to put a clear limit on because it's workload dependent.

If you need more storage, availability, or iops, the current recommendations are shared relational stored or NoSql.

Sharding relational databases means instead of turning on 1 MySql machine, you turn on 16 MySql machines and store 1/16th of the data on each machine. It only allow queries patterns that can be responded to by a single shard (so if you are only doing queries on a per user basis, your golden, otherwise, not so much) and require that your hottest shards (e.g. most active users) should only be a few orders of magnitude larger than your coldest (Justin Bieber probably needs his own machines at Twitter because he has so many users). There are ways to get around this, but they are tricky and will require a lot of developer time.

With NoSql (riak, cassandra, dynamo, etc.), you have to give up many features that make developers lives easier in order to scale beyond a single machine. Each flavor has it's own set of tradeoffs, but the biggest problem is that you loose (1) committing multiple rows at the same time (atomic commit) and (2) ensuring queries don't overlap (isolation).

Spanner offers an alternative where the developer (for the most part) doesn't have to know that her data lives on multiple different machines. It gives you 99.999% availability and theoretically unlimited scaling to any size, with an API that is still relatively developer friendly (compared with NoSql or Shared Sql). One cost here is latency / performance. You need to write to multiple computers across the world so write speed will be bounded at a minimum by the speed of light between those datacenters.

Short answer, there are a lot of companies that could benefit from a system like this. It could give higher availability to a small Sql dataset or stronger guarantees to a current large NoSql database. There is even an argument to be made that the majority of problems companies face today are best solved with this type of system and relational or NoSql optimized workloads are the exception, not the rule.

<comment><USER41> 1 to 9 hours of downtime a year for MySQL seems on the high side. With Aura, the failover times are much less and outside of the cloud, if there's a "noc", they can failover quicker than that.

</comment></comment></comment><comment><USER42> > Today, we're excited to announce the public beta for Cloud Spanner, a > globally distributed relational database service that lets customers have > their cake and eat it too: ACID transactions and SQL semantics, without > giving up horizontal scaling and high availability.

This sounds too good to be true. But it's Google, so maybe not. Time to start reading whitepapers...

</comment><comment><USER43> Interesting reading: Spanner Whitepaper

[https://cloud.google.com/spanner/docs/whitepapers/SpannerAnd...](https://cloud.google.com/spanner/docs/whitepapers/SpannerAndCap.pdf)

</comment><comment><USER44> Link to the actual OSDI paper (not the simpler whitepaper) [https://static.googleusercontent.com/media/research.google.c...](https://static.googleusercontent.com/media/research.google.com/en//archive/spanner- osdi2012.pdf)

</comment><comment><USER45> Looks cool, but the pricing seems a bit non-cloud-native (or at least non-GCP- native).

"You are charged each hour for the maximum number of nodes that exist during that hour."

We've been educated by Google to consider per-minute, per-instance/node billing normal - and presumably all the arguments about why this is the right, pro-customer way to price GCE apply equally to Cloud Spanner.

<comment><USER46> The per-minute billing is an advantage when you are scaling up and down rapidly. If you use VMs just for 5 minutes, per minute pricing is 20x cheaper than hourly billing.

However with a database it is rare to scale up and down rapidly. Rather you expect change over the order of days. Imagine you go from 10 instance to 15 instances over a week. per minute billing only saves a possible 5 instance- hours over the week compared to hourly billing, which is less than 1% saving.

</comment></comment><comment><USER34> While everyone is puzzling over how Spanner seems to be claiming to be CA, I would like to take this opportunity to bring up PACELC[1].

The idea is that the A-or-C choice in CAP only applies during network partitions, so it's not sufficient to describe a distributed system as either CP or AP. When the network is fine, the choice is between low latency and consistency.

In the case of Spanner, it chooses consistency over availability during network partitions, and consistency over low latency in the absence of partitions.

1: [http://cs-www.cs.yale.edu/homes/dna/papers/abadi-pacelc.pdf](http://cs- www.cs.yale.edu/homes/dna/papers/abadi-pacelc.pdf)

<comment><USER47> It's not claiming CA. It's claiming CP with A strongly implied thanks to a massive amount of Google engineering and private networking.

[https://cloudplatform.googleblog.com/2017/02/inside-Cloud- Sp...](https://cloudplatform.googleblog.com/2017/02/inside-Cloud-Spanner-and- the-CAP-Theorem.html)

<comment><USER26> I think A is wrongly implied, tried to explain it here: [https://news.ycombinator.com/item?id=13645925](https://news.ycombinator.com/item?id=13645925)

</comment></comment></comment><comment><USER48> > clients can do globally consistent reads across the entire database without > locking

How is this possible across data centres? Does it send data everywhere at once?

Seems too good to be true of course but if it works and scales it might be worthwhile just not having to worry about your database scaling? Still I don't believe it ;-)

EDIT: further info...

> Spanner mitigates this by having each member be a Paxos group, thus ensuring > each 2PC "member" is highly available even if some of its Paxos participants > are down. Data is divided into groups that form the basic unit of placement > and replication.

So it's SQL with Paxos that presumably never get's confused but during a partition will presumably not be consistent.

<comment><USER44> > In terms of CAP, Spanner claims to be both consistent and highly available > despite operating over a wide area, which many find surprising or even > unlikely. The claim thus merits some discussion. Does this mean that Spanner > is a CA system as defined by CAP? The short answer is "no" technically, but > "yes" in effect and its users can and do assume CA. The purist answer is > "no" because partitions can happen and in fact have happened at Google, and > during some partitions, Spanner chooses C and forfeits A. It is technically > a CP system.

<comment><USER49> I would expect more from Brewer.

"CA except when there are partitions" is CP. It's not "effectively CA".

<comment><USER33> No, he's saying it's effectively CAP because the A downtime is so small.

It's one thing to do that for a key-value store. Entirely another to support joins on a _globally_ distributed database. This ain't just one availability zone. Spanner is amazing.

It took them a few years to make it a service, but when they announced its use internally a few years ago, it seemed like the nail in the coffin for in-house database hosting.

<comment><USER49> I understand what he's saying. It's marketing.

There's nothing wrong with saying it's CP, but since we control everything there's extremely rare P. Then he can show availability numbers (which he kinda does).

Saying it's "effectively CA" defeats the point of the CAP theorem, which says you have to make tradeoffs. See: [https://codahale.com/you-cant-sacrifice- partition-tolerance/](https://codahale.com/you-cant-sacrifice-partition- tolerance/)

<comment><USER33> > It's marketing.

No, it's engineering. It's the recognition that if periods of unavailability are too small and too rare to be noticed, then the system behavior is indistinguishable from an "available" system in the sense of the CAP theorem.

It's like the "Retina" display you're probably reading from. There are pixels, you just can't see them.

</comment></comment></comment></comment></comment></comment><comment><USER50> I was like YES!!! Then I read for a single node it is 90 cents per hours then I was like NO!!! so absolute minimal cost for me is $648/month? I was hoping there was like a dev version. Maybe I didn't read the fine print?

<comment><USER51> I was thinking the same thing! Maybe it's better to look into some smaller service which offer e.g. PostgreSQL as a Service like [https://www.elephantsql.com/plans.html](https://www.elephantsql.com/plans.html) or [https://www.databaselabs.io/pricing/](https://www.databaselabs.io/pricing/) (I'm sure they are even more, just done a quick googling). Does somebody has experience with such services?

<comment><USER50> PostGres at least offers full text indexing. I couldn't find that on Cloud Spanner.

</comment></comment></comment><comment><USER52> One thing to note is Spanner's transactions are different compared to what you get with a traditional RDBMS. See [https://cloud.google.com/spanner/docs/transactions#ro_transa...](https://cloud.google.com/spanner/docs/transactions#ro_transaction_example)

An example is the rows you get back from a query like "select * from T where x=a" can't be part of a RW transaction. I believe because they don't have the time-stamp associated with them. So, you have to re-read those rows via primary key inside a RW transaction to update them. This can be a surprise if you are coming from a traditional RDBMS background. If you are think about porting your app from MySQL/PostgreSQL to Spanner, it will be more than just updating query syntax.

Disclaimer: I used F1 (built on top of Spanner, [https://research.google.com/pubs/pub41344.html](https://research.google.com/pubs/pub41344.html)) few years ago.

</comment><comment><USER8> >> Remarkably, Cloud Spanner achieves this combination of features without violating the CAP Theorem.

This is the best weasel PR language I have seen in a long time.

Note that the sentence does not actually proclaim that they solved (the previously "unsolvable") problem of achieving distributed consensus with unreliable communication while maintaining partition tolerance and availability.

The blog only says they don't "violate" the CAP theorem -- whatever that means. So the statement is technically correct. Still the intention is obviously to mislead the casual reader (why else would you start the sentence with "Remarkably"?).

A litmus test: The same statement is true for MySQL - or _any other_ database in fact:

      >> "Remarkably, MySQL achieves this combination of features without violating the CAP theorem"

It's a bit like saying

      >> "Remarkably, MySQL is not a perpetuum mobile"

</comment><comment><USER53> Given that CockrochDB is based on Spanner and F1, this DBaaS sounds like it will compete directly with them.

<comment><USER54> > Given that CockrochDB is based on Spanner and F1, this DBaaS sounds like it > will compete directly with them.

Except that it's not. CockroachDB uses MVCC. Spanner uses 2PL and F1 uses OCC. Not the same at all.

</comment></comment><comment><USER55> Is JSON data type support in the works? Seems to be a very commonly requested feature these days.

<comment><USER12> Yes, it's something we have on the roadmap. We will adjust priority based on the level of demand so thanks for your vote ;-)

(disclaimer: I work on Cloud Spanner)

<comment><USER56> Dumb question: Since strings are supported, couldn't you just store some JSON as a string? Or are you talking about supporting queries that involve parsing the JSON on the "server"?

<comment><USER55> Not dumb, I was being inexact. I was talking about Spanner understanding the semantics of JSON, similar to Postgre's JSONB or MYSQL's JSON.

<comment><USER57> I think the OP was saying "dumb question" as in "I have a dumb question" rather than "this is a dumb question". At least that's the context I inferred.

</comment></comment></comment></comment></comment><comment><USER58> I can vouch for Spanner: it's a badass piece of Google's infrastructure.

</comment><comment><USER59> Related, I wrote a blog post on the network latency between Google Compute Engine zones and regions. I'm assuming Cloud Spanner will still have these latencies once multi-region is deployed. Cross-zone latency on GCE is very good though.

[https://blog.elasticbyte.net/comparing-bandwidth-prices- and-...](https://blog.elasticbyte.net/comparing-bandwidth-prices-and-network- latency-between-google-compute-zones-and-regions/)

</comment><comment><USER60> Oh this looks really compelling! Though I'm guessing this is targeted to companies? I'd love to use this for some personal projects but the pricing seems really high. Am I reading it right that a single node being used at least a tiny bit every hour is about $670 a month?

Maybe I'm misunderstanding how the pricing works here. Any clarification would be highly welcomed :)

<comment><USER46> It's targeted to large datasets more than companies. There isn't really any advantage of a single node Cloud Spanner instance over Cloud SQL. Cloud Spanner becomes worthwhile when you have more data/throughput than a single node system can support, at which point the pricing is competitive with other options.

<comment><USER60> Fair enough. I just kinda wanted to play with it on my next project :)

</comment></comment></comment><comment><USER61> What is TrueTime really? Are their Distributed Systems 'sharing a global clock'?

<comment><USER62> From the Spanner paper:

> The underlying time references used by TrueTime are GPS and atomic clocks. > TrueTime uses two forms of time reference because they have different > failure modes... TrueTime is implemented by a set of time master machines > per datacenter and a timeslave daemon per machine. The majority of masters > have GPS receivers with dedicated antennas; these masters are separated > physically to reduce the effects of [GPS] antenna failures, radio > interference, and spoofing. The remaining masters (which we refer to as > Armageddon masters) are equipped with atomic clocks. An atomic clock is not > that expensive: the cost of an Armageddon master is of the same order as > that of a GPS master.

Source: [https://static.googleusercontent.com/media/research.google.c...](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/39966.pdf)

</comment></comment><comment><USER63> Does it support spatial objects / can it replace PostGIS?

<comment><USER64> No. [https://cloud.google.com/spanner/docs/data- types](https://cloud.google.com/spanner/docs/data-types)

</comment></comment><comment><USER65> > This leads to three kinds of systems: CA, CP and AP,

What is a distributed system that is CA? Can you build a distributed system which will never have a partition.

<comment><USER66> They answer your question just two lines under the one you are quoting:

> For distributed systems over a "wide area," it's generally viewed that > partitions are inevitable, although not necessarily common. If you believe > that partitions are inevitable, any distributed system must be prepared to > forfeit either consistency (AP) or availability (CP), which is not a choice > anyone wants to make. In fact, the original point of the CAP theorem was to > get designers to take this tradeoff seriously. But there are two important > caveats: First, you only need to forfeit consistency or availability during > an actual partition, and even then there are many mitigations. Second, the > actual theorem is about 100% availability; a more interesting discussion is > about the tradeoffs involved to achieve realistic high availability.

<comment><USER65> > If you believe that partitions are inevitable, any distributed system

How does that answer it? Are they implying that partitions will not happen if you don't believe in them?

<comment><USER67> A CA system is not a system that doesn't have partitions, it's a system that works under the condition that there are no partitions (ie. it is a non- partition-resistant system).

<comment><USER65> > , it's a system that works under the condition that there are no partitions

But that is not a choice with distributed systems, unless as soon as a partition happens the system shuts down immediately. That is it effectively disappears and never re-appears again. But that's not a CA system then?

Or saying that it is not partition resistant is also difficult because the system in case of a partition will do _something_. The typical choices is that it either responds to clients (trying to be AP) or it doesn't (trying to be CP).

That is why I understand CA systems as equivalent to the belief that "partitions can't happen". Which I think is unrealistic.

<comment><USER67> This is a system which is guaranteed to be consistent and available as long as there are no partitions. If there are partitions, the system isn't guaranteed to be either.

Yes, it's a pretty much useless system.

</comment></comment></comment></comment></comment></comment><comment><USER68> Few questions from reading the docs:

1) How big can all the colocated data for a single primary key get before they don't fit within a split? Can I implement a GMail-like product where all the data for a single user resides within one split?

2) Is there a way to turn off external consistency and fall back to serializability? In return you get better write latencies. This is similar to what CockroachDB provides?

</comment><comment><USER69> Here is a very interesting video from 2013 of Martin Schoenert explaining the Google Spanner White Paper (In german though): [https://www.youtube.com/watch?v=2QKewyoOSL0](https://www.youtube.com/watch?v=2QKewyoOSL0)

Now he works for Google as an Engineering Manager.

</comment><comment><USER70> Doesn't seem possible to use this yet. No client libraries and no samples: [https://cloud.google.com/spanner/docs/tutorials](https://cloud.google.com/spanner/docs/tutorials)

Have they documented the wire protocol? I couldn't find it.

<comment><USER71> I work on Cloud Spanner and client libraries are rolling out right now, but API definitions are available.

RPC: [https://cloud.google.com/spanner/docs/reference/rpc/](https://cloud.google.com/spanner/docs/reference/rpc/) Rest: [https://cloud.google.com/spanner/docs/reference/rest/](https://cloud.google.com/spanner/docs/reference/rest/)

<comment><USER72> Anyone working on a Rust lang client-library?

</comment></comment></comment><comment><USER73> Spanner's paper: [https://static.googleusercontent.com/media/research.google.c...](https://static.googleusercontent.com/media/research.google.com/en//archive/spanner- osdi2012.pdf)

</comment><comment><USER74> > _If you have a MySQL or PostgreSQL system that 's bursting at the seams_

Postgresql ? How does this work for people _migrating_ from traditional SQL databases - typically people use ORM. How would this fit in with, say , Rails or SqlAlchemy ?

<comment><USER12> There is real work to migrate you application to use Cloud Spanner. Your schemas and queries will work with some tweaking but we don't have ORM support at beta.

We are going to produce some additional collateral on migrating from popular RDBMS, but the Quizlet post is the best reference right now for migrating from MySQL.

[https://quizlet.com/blog/quizlet-cloud- spanner](https://quizlet.com/blog/quizlet-cloud-spanner)

We have released client libraries for Java, Go, Node and Python on Github, but we haven't used those clients to implement support for popular ORMs.

Basically, the open-source ecosystem will need to add support for these ORMs but we will contribute wherever we can to push these initiatives. If we get lots of demand for a specific ORM, we will look into doing something special for that.

Hope that helps.

(disclaimer: I work on Cloud Spanner)

</comment></comment><comment><USER75> Very interesting. How does this pricing compare to AWS Aurora? [https://aws.amazon.com/rds/aurora/pricing/](https://aws.amazon.com/rds/aurora/pricing/)

<comment><USER10> Not sure. If you need to scale beyond a single master, Aurora won't help in the same way Spanner does though. You can dial up the number of nodes in Spanner dynamically under load with good results.

</comment></comment><comment><USER59> So does Cloud Spanner replace the existing Google Cloud SQL offering [1]? What are the pros/cons of each?

[1] [https://cloud.google.com/sql/](https://cloud.google.com/sql/)

<comment><USER76> That offering is just normal managed MySQL, the new thing is a custom built database for huge scalability, much more expensive of course.

<comment><USER59> Right that's what I was getting at, a typical web app does not and probably should not start with Cloud Spanner (ignoring the fact it costs $0.90 per hour per node). Cloud Spanner seems like it is attacking the big data market correct?

<comment><USER76> Something like that. But not necessarily the Big Data that's being analyzed, that's usually done with Hadoop/Spark/whatever is the big thing now. It seems to be aimed at, like, huge apps that actually need horizontal scalability.

</comment></comment></comment></comment><comment><USER77> Is this similar to AWS Aurora or is this something else completely different?

<comment><USER78> Aurora is not globally distributed. Spanner is, and is based on Google research which takes advantage of atomic clocks installed in each server: [https://research.google.com/archive/spanner- osdi2012.pdf](https://research.google.com/archive/spanner-osdi2012.pdf)

Edit: not every server has an atomic clock; see replies by Google employees

<comment><USER79> There are only atomic clocks in _some_ master servers: "TrueTime is implemented by a set of time master machines per datacenter and a timeslave daemon per machine. The majority of masters have GPS receivers with dedicated antennas; these masters are separated physically to reduce the effects of antenna failures, radio interference, and spoofing. The remaining masters (which we refer to as Armageddon masters) are equipped with atomic clocks. An atomic clock is not that expensive: the cost of an Armageddon master is of the same order as that of a GPS master."

The timeslave daemons running on each machine keep them synchronized with the master time servers, and maintain tight bounds on their inaccuracy.

(Disclaimer: I work at Google)

</comment></comment></comment><comment><USER80> Interesting but without INSERT and UPDATE it just isn't worth it for me. When can we expect it to handle data manipulation language (DML) statements?

</comment><comment><USER81> "What if you could have a fully managed database service that's consistent, scales horizontally across data centers and speaks SQL?"

Looks like Google forgot to mention one central requirement: latency.

This is a hosted version of Spanner and F1. Since both systems are published, we know a lot about their trade-offs:

Spanner (see OSDI'12 and TODS'13 papers) evolved from the observation that Megastore guarantees - though useful - come at performance penalty that is prohibitive for some applications. Spanner is a multi-version database system that unlike Megastore (the system behind the Google Cloud Datastore) provides general-purpose transactions. The authors argue: We believe it is better to have application programmers deal with performance problems due to overuse of transactions as bottlenecks arise, rather than always coding around the lack of transactions. Spanner automatically groups data into partitions (tablets) that are synchronously replicated across sites via Paxos and stored in Colossus, the successor of the Google File System (GFS). Transactions in Spanner are based on two-phase locking (2PL) and two-phase commits (2PC) executed over the leaders for each partition involved in the transaction. In order for transactions to be serialized according to their global commit times, Spanner introduces TrueTime, an API for high precision timestamps with uncertainty bounds based on atomic clocks and GPS. Each transaction is assigned a commit timestamp from TrueTime and using the uncertainty bounds, the leader can wait until the transaction is guaranteed to be visible at all sites before releasing locks. This also enables efficient read-only transactions that can read a consistent snapshot for a certain timestamp across all data centers without any locking.

F1 (see VLDB'13 paper) builds on Spanner to support SQL-based access for Google's advertising business. To this end, F1 introduces a hierarchical schema based on Protobuf, a rich data encoding format similar to Avro and Thrift. To support both OLTP and OLAP queries, it uses Spanner's abstractions to provide consistent indexing. A lazy protocol for schema changes allows non- blocking schema evolution. Besides pessimistic Spanner transactions, F1 supports optimistic transactions. Each row bears a version timestamp that used at commit time to perform a short-lived pessimistic transaction to validate a transaction's read set. Optimistic transactions in F1 suffer from the abort rate problem of optimistic concurrency control, as the read phase is latency- bound and the commit requires slow, distributed Spanner transactions, increasing the vulnerability window for potential conflicts.

While Spanner and F1 are highly influential system designs, they do come at a cost Google does not tell in its marketing: high latency. Consistent geo- replication is expensive even for single operations. Both optimistic and pessimistic transactions even increase these latencies.

It will be very interesting to see first benchmarks. My guess is that operation latencies will be in the order of 80-120ms and therefore much slower than what can be achieved on database clusters distributed only over local replicas.

<comment><USER82> Spanner's p90s are, for at least one user, consistently lower than 50 ms. [https://quizlet.com/blog/quizlet-cloud- spanner](https://quizlet.com/blog/quizlet-cloud-spanner)

(Disclaimer: I work on Google's cloud.)

</comment></comment><comment><USER83> I'd love to see a jepsen test. Maybe the spanner team would be able to sponsor an independent test?

</comment><comment><USER84> Great product from Google. I wonder what is the difference between Cloud Spanner and Google CloudSQL

<comment><USER85> Cloudsql is managed MySQL. Spanner is a custom in-house distributed database.

</comment></comment><comment><USER86> > Unlike most wide-area networks, and especially the public internet, Google > controls the entire network and thus can ensure redundancy of hardware and > paths, and can also control upgrades and operations in general

I know this is a single system, but I'll still say it. This seems like another step in a scary trend for our internet.

<comment><USER30> Why is it a scary trend that Google has made their part of the internet more resilient?

<comment><USER87> because we keep giving up more and more control to a single Ad company.

</comment></comment></comment><comment><USER88> The sql syntax reference looks similar to that of Postgres' syntax reference.

<comment><USER46> Actually it is most closely related to the new ["Standard SQL" in BigQuery]([https://cloud.google.com/bigquery/docs/reference/standard- sq...](https://cloud.google.com/bigquery/docs/reference/standard-sql/)).

</comment></comment><comment><USER89> does anyone know if it works with django or a way to make it working? it should be a matter of a connector, no?

</comment><comment><USER90> SqlAlchemy engine please :) ?

</comment><comment> crooked-v Neat.

How long until it gets shut down with a month's notice?

</comment><comment><USER11> > Today, we're excited to announce the public beta for Cloud Spanner, a > globally distributed relational database service that lets customers have > their cake and eat it too: ACID transactions and SQL semantics, without > giving up horizontal scaling and high availability.

This is a bold claim. What do they know about the CAP theorem that I don't?

Separately, (emphasis mine):

> If you have a MySQL _or PostgreSQL_ system that's bursting at the seams, or > are struggling with hand-rolled transactions on top of an eventually- > consistent database, Cloud Spanner could be the solution you're looking for. > Visit the Cloud Spanner page to learn more and get started building > applications on our next-generation database service.

From the rest of the article it seems like the wire protocol for accessing it is MySQL. I wonder if they mean to add a PostgreSQL compatibility layer at some point.

<comment><USER91> Theoretically it means they are giving up on being Partition Tolerant. There was a popular post a while ago about how the P can't be sacrificed. Because if it is... everything else will fail.

Being Google they are probably prideful enough to think their servers could never have an outage. Which yes, I agree with you, that is a very scary claim.

<comment><USER92> This is thoroughly wrong. Cloud Spanner sacrifices the "A", not the "P." The cool thing being accomplished here is that the sacrifice to the A is greatly reduced (five or more 9s). There are several documents on the subject linked right off that page and elsewhere in these same comments, like this one: [https://cloud.google.com/spanner/docs/whitepapers/SpannerAnd...](https://cloud.google.com/spanner/docs/whitepapers/SpannerAndCap.pdf)

</comment></comment></comment><comment><USER93> While the product is compelling (acid compliant, horizontally scanning DB), it does seem expensive.

If you use 2 nodes/hour, Cost = (2 _0.9)_ 24 * 31 = $1400/month not anointing for storage and network chargers.

</comment><comment><USER94> > $.90 per node per hour

That makes $700 per month. Is this the minumum? or can we have 0 node when the lambda is idle ?

</comment><comment><USER95> I see there's "data layer encryption" but the data is still readable by Google. Why would anyone want to keep feeding the Google beast with more data?

Software is about separating concerns, and decentralizing authority. Responsible engineers shouldn't be using this service.

</comment><comment><USER96> Amazing! But why does this feel like such a de ja vue all over again.. (surely I'm missing something).. They've spent 5 years telling us that we just CAN'T scale SQL.. Now they'll tell us that actually.. they've figured it out! :)

</comment><comment><USER97> Given the CAP theorem I wonder what trade-offs they make and how much visibility they give you into these trade-offs.

In any case this is much better than Amazon's offerings... when they actually ship it. :)

<comment><USER98> Check out this post mentioned in the original post:

[https://cloudplatform.googleblog.com/2017/02/inside-Cloud- Sp...](https://cloudplatform.googleblog.com/2017/02/inside-Cloud-Spanner-and- the-CAP-Theorem.html)

Of note:

They say Spanner is "both consistent and highly available despite operating over a wide area". So not 100% availability but they've got it to "more than five 9s of availability (less than one failure in 1066)."

<comment><USER99> I didn't pick up on it until just a moment ago, but when you say "They say", it's actually Eric Brewer saying that -- who's most known for coming up with the CAP theorem. I think they've got a pretty good understanding of it!

<comment><USER98> ha whoops good catch! I knew the post was written by Brewer, but slipped up with the they... yeah I think we have it on pretty good authority that they system doesn't so how violate CAP yet addresses it's challenges.

</comment></comment></comment></comment><comment><USER100> I wonder how many people will get a seizure from that red-blue blinking rectangle in the video :(

Upd: Downvoting this warning will only increase that number.

</comment><comment><USER101> > Does this mean that Spanner is a CA system as defined by CAP? The short > answer is "no" technically, but "yes" in effect and its users can and do > assume CA.

It's somewhat ironic that Brewer, the original author of the CAP theorem, is making this sort of marketing-led bending of the CAP theorem terminology. I think what he really should be saying is something in more nuanced language like this: [https://martin.kleppmann.com/2015/05/11/please-stop- calling-...](https://martin.kleppmann.com/2015/05/11/please-stop-calling- databases-cp-or-ap.html)

But perhaps Google's marketing department needed something in the more popular "CP or AP?" terminology. I don't see what would be wrong with "CP with extremely high availability" though.

It's certainly wacky to be claiming that a system is "CA", since as the post admits it's technically false; to me this makes it clear that CP vs. AP (vs. CA now?) does not convey enough information. I'd prefer "a linearizably- consistent data store, with ACID semantics, with a 99.999% uptime SLA". Not as snappy as "CA" (I will never have a career in marketing I suppose), but it makes the technical claims more clear.

<comment><USER82> You're omitting what immediately follows:

> The purist answer is "no" because partitions can happen and in fact have > happened at Google, and during some partitions, Spanner chooses C and > forfeits A. It is technically a CP system.

> However, no system provides 100% availability, so the pragmatic question is > whether or not Spanner delivers availability that is so high that most users > don't worry about its outages. For example, given there are many sources of > outages for an application, if Spanner is an insignificant contributor to > its downtime, then users are correct to not worry about it.

<comment><USER101> My point is, why call this "CA", if it's not CA? Especially when you immediately go on to explain why it's not really CA?</comment></comment></comment>


Berlin-based language learning app maker Babbel hits 1M paying customers - <AUTHOR> http://tech.eu/brief/berlin-based-language-learning-app-maker-babbel-hits-1-million-paying-customers/ <comment><USER2> They took spaced-repetition and added another level of study to it.

Very cool.</comment>


Math Puzzle: Pizza Paradox Puzzle - <AUTHOR> http://pratikpoddarcse.blogspot.in/2012/12/pizza-paradox-puzzle.html <comment><USER2> I think in each round the king plays the 2 coin flip for each of the selected candidates, one after the other, with the game ending as soon as the first contestant wins. This will result in 4 coin tosses for the seconds round, 8 in the third and so on. Hence allowed question regarding the round number.

</comment><comment><USER3> .25 regardless of how long the game has been going. It doesn't help to ask the king.

<comment><USER4> It seems too easy but that's the answer I got.

<comment><AUTHOR> I challenge you to try the difficult ones then :) [http://pratikpoddarcse.blogspot.in/search/label/DifficultPuz...](http://pratikpoddarcse.blogspot.in/search/label/DifficultPuzzles)

</comment></comment></comment><comment><USER5> IDGI. If I play and two fair coins come up heads, I get pizza. Boom, 1 in 4. What do all the other people have to do with it?!

EDIT: Unless "getting a call" does not mean "I get to play in a round _right now_ ".

</comment><comment><USER6> Agree, 1 in 4, Gambler's Fallacy: <http://en.m.wikipedia.org/wiki/Gamblers_fallacy>

</comment><comment><USER7> It does not matter which round it is, your chances will always be 1 in 4.</comment>


Reusable Validations in Rails Form Objects – Freeletics Engineering - <AUTHOR> http://freeletics.engineering/2017/04/19/reusable-validations-in-rails-form-objects.html <comment><USER2> define_singleton_method seems like overkill when setting @errors would accomplish the same result.</comment>


Apple sued over use of iBooks name - <AUTHOR> http://www.tekgoblin.com/2011/06/15/apple-now-sued-over-use-of-ibooks-name/

<comment><USER2> That's funny: I worked with Byron Preiss back in the day (my company did two CD-ROMs for him), years before he sadly passed away in an auto accident. A bit of history: Preiss did a great deal of book packaging relating to comic books and science fiction. In the 80s he tried to do books on floppy discs, but his big break came in the 90s when he launched a CD-ROM company that went public. The company didn't do too well, but that was more of a reflection of the CD- ROM market than Byron. After the failure of that company I recall that Byron tried to do e-books again, but it didn't quite work. The problem wasn't his content, but the fact that the technology wasn't quite there yet. If he were alive I'm sure he'd be creating interactive books for the iPad.</comment>


Create Your Own Game, a game programming class - <AUTHOR> http://www.indiegogo.com/projects/create-your-own-game-a-game-programming-class

<comment><USER2> Nathan, the guy doing this, ran a previous class on creating your own programming language. It was a great class, and it's really cool how he's doing this on his own, for fun.</comment>


Blue-rich light from LEDs impacts human health and the environment - <AUTHOR> http://darksky.org/ama-report-affirms-human-health-impacts-from-leds/ <comment><AUTHOR> Link to the AMA report (warning - PDF)

[http://darksky.org/wp-content/uploads/bsk-pdf- manager/AMA_Re...](http://darksky.org/wp-content/uploads/bsk-pdf- manager/AMA_Report_2016_60.pdf)</comment>


Online LLVM-based C++ REPL - <AUTHOR> http://fiddle.jyt.io <comment><USER2> It is a great idea in general and a technical feat in itself. It is just that C++ is not the best language for that type of programming. It may work OK for toy to lower-middle size of projects, but for big projects compilation time starts to pile up pretty quickly. One reason for that is C legacy of header files that are recompiled for each and every translation unit (yes there are PCH but they are unwieldy and require a lot of babysitting and sometimes take back almost all of the time you gain from their usage). Another is C++ language grammar: C++ requires 3 (three!) syntax passes to be parsed correctly. Then there is also all the template and metaprogramming magic which is Turing complete (Just look at Facebook Fatal C++ library - I am still undecided if they are for real or it is an elaborate trolling).

<comment><USER3> Yes, C++ takes long to compile compared to other languages. But I never understood the problems people have with precompiled headers. They've worked just fine, without any tweaking or babysetting, for me since Visual Studio 6. That's 15+ years. I don't know how/if the implementations of gcc or clang work, but using the msvc compiler precompiled headers are braindead simple.

<comment><USER4> they work just fine with GCC & Clang, too. If you use CMake, I recommend the cotire library : it's one line to add to get PCH on all platforms.

</comment></comment></comment><comment><USER5> Very nice !

I played around with it a little.

It doesn't crash on errors, just prints a helful error message.

Time for one more attempt at teaching my son programming, with c++ this time !

previous discussion with more info: [https://news.ycombinator.com/item?id=11478301](https://news.ycombinator.com/item?id=11478301)

<comment><USER6> Does it support the entire STL?

</comment></comment><comment><USER7> It's good, supports concurrency also !!!

[http://fiddle.jyt.io/github/9a340a40988f79264c3686a90d2d80e3](http://fiddle.jyt.io/github/9a340a40988f79264c3686a90d2d80e3)

<comment><USER8> Why is the _name_ variable not output in the worker threads?

</comment></comment><comment><USER5> License says beta version says it collects usage info and sends back time and date of each call to jyt.

Would be nice to be able to opt out of that.</comment>


Does the news reflect what we die from? - <AUTHOR> https://ourworldindata.org/uploads/2019/05/Causes-of-death-in-USA-vs.-media-coverage.png <comment><AUTHOR> [https://ourworldindata.org/does-the-news-reflect-what-we- die...](https://ourworldindata.org/does-the-news-reflect-what-we-die-from)</comment>


Coronavirus Came from Bats, Can Infect Cats, Ferrets, WHO Says - <AUTHOR> https://www.bloomberg.com/news/articles/2020-05-08/covid-19-came-from-bats-can-infect-cats-ferrets-who-says <comment><USER2> WHO said for weeks it wasn't transmittable between humans, that countries should not impose travel restrictions, and insisting late into the pandemic that you don't need to wear masks unless you're infected.

Arguably the WHO has blood on its hands for allowing the virus to spread.

They unquestionably are influenced by China and CCP's politics, not just denying Taiwan's existence, but the many statements praising China throughout the entire pandemic, on virtually all talking points, while being critical of western nations handling of the virus.

If ever there was a time to take action, point fingers, and restore some dignity to supposedly independent health organizations, it is now, by creating a new organization.

<comment><USER3> This seems to be a "look over there" response. China had a big issue. In Netherlands not much was done. Italy had big issues. Netherlands ignored it. It spread to Netherlands, suddenly extreme measures had to be taken. Meanwhile, not much was done in USA, aside from things like "meh, everything will probably be fine".

Now instead of acknowledging that things went wrong, it's because of someone else, say WHO. And China!

UK had a report saying that a pandemic was the biggest threat. They recommended a tactical amount of ventilators to be kept, plus various other actions. Nothing was done.

> If ever there was a time to take action, point fingers

Blaming doesn't really help anything IMO. Figure out the various causes and take action on them. Blaming, too easy.

</comment></comment><comment><USER4> This has been flagged off the front-page, likely because it mentions the WHO. I haven't really been following the criticism of their handling of this all that closely, so this might be worth reading for others in the same boat: [https://en.wikipedia.org/wiki/World_Health_Organization%27s_...](https://en.wikipedia.org/wiki/World_Health_Organization%27s_response_to_the_COVID-19_pandemic)

This article seems to directly contradict some of the claims made by anti-WHO folks here. In particular, this portion of the timeline jumped out at me, contradicting the claim that the WHO was claiming no human-to-human transmission as late as early February:

\--

 _On 14 January, Maria Van Kerkhove of the WHO told in a press briefing that "it is possible that there is limited human-to-human transmission, potentially among families, but it is very clear right now that we have no sustained human-to-human transmission"_

 _The WHO recommended countries to take precautions due to the human-to-human transmission during earlier SARS and MERS outbreaks. On the same day, the WHO 's Twitter account reported that "preliminary investigations conducted by the Chinese authorities have found no clear evidence of human-to-human transmission"._

 _On 20 January, the WHO released a tweet that it was "now very clear from the latest information that there is at least some human-to-human transmission" that has occurred, given that healthcare workers had been infected._

 _On 22 January, WHO issued a statement stating that the data "suggests that human-to-human transmission is taking place in Wuhan", and called for more investigation._

\--

This certainly sounds to me like they initially said that we weren't seeing human-to-human transmission in mid-Jan, but within a week or so, the data was starting to show the opposite, and they said so.

What exactly is the controversy here?

<comment><USER5> US media and some of right wing European media is charging against WHO because they have to blame someone. That way the can put all the death people numbers on WHO and not take any responsibility fro their handling of the situation.

<comment><USER4> I completely agree that there's a political element, but I'd like to hear from the individuals who are so up-in-arms about this as to why they personally are so aggrieved and how they interpret the facts to indicate such culpability on the WHO's part.

<comment><USER5> I can't help there, I suppose that is the same when someone feel attacked in their beliefs religious or political, some people get really aggressive about that.

</comment></comment></comment></comment><comment><USER6> First, this doesn't belong on HN.

Second, we already know for weeks or months that ferrets and cats are susceptible to SARS-CoV-2—they even find it in their feces. This paper was released to preprint in March 31st and today is May 8th: [https://www.biorxiv.org/content/10.1101/2020.03.30.015347v1](https://www.biorxiv.org/content/10.1101/2020.03.30.015347v1)

Third, virologists and especially those who have studied Coronaviruses for decades say the intermediate species could not have been a pangolin: [https://www.microbe.tv/twiv/twiv-609/](https://www.microbe.tv/twiv/twiv-609/)

I recommend HN mods lock or delete this thread.

</comment><comment><USER7> This article misrepresents the lab theory. At least in its most common version, the lab theory is not "it came from a lab, not bats". It is "it came from bats, was being used for research, and got out accidentally". The article omits this, creating the impression that animal origin is evidence against the lab theory, when of course both could be true.

They wouldn't have left this out by accident. It's an obvious omission once you know about it and it changes the meaning of the story. I have no opinion about whether the virus came from a lab or didn't (how the hell would I know), but when I see someone trying to manipulate me this way, it makes me angry and suspicious and pushes me toward the other side. I've had no interest in the criticisms of Bloomberg reporting before now, but this article incriminates itself.

</comment><comment><USER8> Unpopular opinion (for HN maybe :) - the WHO, which does not solely deal with infectious diseases, much to the world's chagrin, is doing the best job that they can considering the situation. On average the advice from the WHO on a whole range of medical topics has been nothing but excellent, and I am loathe to discount them entirely based on a few press statements that have been taken wildly out of context by the media and the internet as a whole. I feel like I'm taking crazy pills when HN unfailingly dogpiles onto the WHO in yet another thread. Are people missing the forest for the trees?

<comment><USER9> I'm also glad we have a WHO as central point of information and knowledge.

But the WHO could have been more careful with how they put out information. For example: _"...no clear evidence of human-to-human transmission,..."_. This was a true statement, there was no evidence at that time. But they also knew what was going on in China. They could have asked themselves: what if it is human-to-human transmittable? Then they would have never used those words, because those words downplayed the potential risks.

I agree with you the media (and governments) blew this up later when the evidence was there. The WHO never said it was not human-to-human transmittable, but words were taken out of context and suddenly the WHO was to blame.

<comment><USER10> It is worth noting thst the @WHO account tweeted clarification just a few hours later. Whoever made that tweet did not consider their audience correctly, and the resulting misinterpretation is partially on them. But the way it's been spun as some sort of smoking gun is shocking given it is so easy to debunk.</comment></comment></comment>


Russian hackers have infiltrated hundreds of Western energy companies - <AUTHOR> https://www.cyberscoop.com/dragonfly-symantec-energy-companies-phishing-attacks/ <comment><USER2> I was born in ex-soviet Republic of Moldova and I lived in US for last 20 years. Watching in dismay, how world is just quietly watching Russia sabotage world peace in every possible way.</comment>


In Russia, a Bribery Case Lifts the Veil on Kremlin Intrigue - <AUTHOR> https://www.nytimes.com/2017/10/21/world/europe/russia-bribery-vladimir-putin-igor-sechin.html <comment><AUTHOR> _In Mr. Ulyukayev's telling, he had accepted the gift basket of sausages and a bag of wine only to later discover, to his surprise, $2 million in cash tucked in among the other goodies._

I am sure that has happened to all of us. Personally I always hated it, those 5-6 times it happened to me, the sausages smelled like $2 mil in cash...and ruined the experience :)</comment>


Fighting technical debs  with hats - <AUTHOR> http://stem.ps/rails/technical-debt/2015/11/28/fighting-technical-debt-with-hats.html <comment><USER2> The important part here is not the hats, but that they regularly spend a little self directed time for reducing technical debt. I think this is much better than the usual "let the code fester until we can't stand it anymore, then plan a major refactoring". However, it's also a lot harder to sell to management because there are most likely few measurable improvements.

<comment><USER3> I am one of the devs in the pictures. We often have measurable improvements -- the shark hat (meant for performance improvements) is obvious. Results are shown in our performance monitoring tools.

The impact of our rainbow-hat (meant to enhance the codebase, contribute to some open-source projects we use, do what you think makes the world a better place) is harder to put on a graph. But we could count code metrics, documentation, merged features in OOS projects etc. We don't do that , though.

What we do is talking about what we did with our hat time after each sprint when choosing the new hat-wearers.

</comment></comment><comment><USER4> debs?</comment>


Show HN: GPU accelerated video stabilisation on iOS - <AUTHOR> https://itunes.apple.com/ca/app/deshake-video-handshake-removal/id1104260355?mt=8 <comment><USER2> No demo video?

<comment><AUTHOR> Here it is a quick one. Also the next release would have some improvements and a better demo => [https://www.youtube.com/watch?v=wwcDK6ZDKco](https://www.youtube.com/watch?v=wwcDK6ZDKco)</comment></comment>


North Korea's "secret cyber-weapon": brand new Red Star OS (Linux-based) - <AUTHOR> http://rt.com/Top_News/2010-03-01/north-korea-cyber-weapon.html?fullstory <comment><USER2> Hm. North Korea has Red Star Linux. South Korea is a Windows monoculture.

Even Steve Ballmer's worldview is right once in a while.

</comment><comment><USER3> While the article's content uses the phrase, nothing suggests that this distribution, which appears to be a very loosely-rebranded stock Linux, is any sort of "cyber-weapon" in terms of digital warfare.

</comment><comment><USER4> This could be good. Whether they are North Korea or not, imagine the pace and polish Linux could pick up with an entire country dependent upon it! Assuming, of course, they submit to upstream.

<comment><USER5> I think you may be overestimating the standard of living and technical sophistication of North Korea.

</comment></comment><comment><USER6> I wonder if they are complying with GPL. The "secret cyber-weapon" can't be so secret if they are also supplying source code, right?

Then again, I'd imagine it would be tough to put legal pressure on the DPRK when the combined diplomatic efforts of the West can't get them to budge....

<comment><USER7> Well, from reading the article I'd say it's neither secret nor a weapon either way.

I doubt DPRK cares about the GPL at all. I imagine the app suite that's "similar to OpenOffice" _is_ OpenOffice, perhaps slightly reworked. A full OpenOffice-like suite would take a lot of time and people to build from scratch, for no real benefit.

<comment><USER8> I think the same counts for the browser (which was firefox), the IM app ("pidgeon"? Pidgin, probably), the windows emulator (wine?) and so on and so forth.</comment></comment></comment>


Dippin' Dots Files for Chapter 11 Bankruptcy - <AUTHOR> http://online.wsj.com/article/SB10001424052970203716204577017782899029206.html

<comment><USER2> Bad management? They had a (growing) revenue of $27.7m (<http://en.wikipedia.org/wiki/Dippin_Dots>).

Meanwhile, their south-american counterpart is doing fine (and in need of a better design agency): <http://www.delidrops.com/global_ing/global.html>

<comment><USER3> According to the article, they hit liquidity trouble during the financial crisis which caused them to go into technical default. According to the article, they have $20.2 million in assets and $27.7 million in revenues but Regions Bank refused to negotiate on payment.

I wonder if this is just the last part of an attempt by Regions to use the default to seize the company at far below its market value.

<comment><USER2> Yeah, it's strange to hear of a bank refusing to renegotiate an amount like this. Maybe they are certain the company will go down either way.</comment></comment></comment>


Coronavirus: World in 'Uncharted Territory' - happy-go-lucky https://www.bbc.com/news/world-51712437 <comment><AUTHOR> This is such a click-baity article.

Headline quotes "uncharted territory" to be scary.

Subhead points out this is part of a quite from a doctor.

Read in to the text, and the doctor is saying we're in uncharted territory, but really the stigma of the virus remains much worse than the actual disease.</comment>


Are Audiobooks as Good for You as Reading? - <AUTHOR> http://time.com/5388681/audiobooks-reading-books/ <comment><USER2> Reading is good, but re-reading is _sublime._ If you think of reading a book as something "good for you", the amount you gain on the second time around (in what you commit to memory, and what you notice in detail, esp for works of fiction) cannot be overstated. If you've never re-read a book I highly suggest picking up your favorite work of literature and giving it a go.

Now many people don't want to re-read a book because they could be reading a new book with that time, and many people say the world (even driving) is too distracting for full concentration on an audiobook. Let me propose that you try "re-reading" your favorite books by listening to them on audiobook. I have been doing this on my commute and it is 95% as good as giving the book a textual re-read.

You are already familiar with all of the material, so spacing out for a minute here and there is no big deal. I don't want to descend into wacky hyperbole, but I really super strongly recommend listening to audiobooks that you have already read. Try it!

<comment><USER3> I've had good success flipping between an audiobook while commuting, and reading the next chapters at home at night. My brain was able to seamlessly meld the two modes together.

<comment><USER4> This. So much this.

Specifically when reading fiction for pleasure, an audiobook can provide too much "color" not indented by the author. This, alone, makes it hard to recommend an audiobook as a solo source. However, having that second voice can force you to rethink your readings of specific situations. It can challenge you to really dig in when your understanding does line up with the reader's tone.

The first example that comes to mind is the English translation of "100 Years of Solitude" on Audible. All the voices have a comedian's intonation, especially Melquíades, who is supposed to be an Armenian gypsy, but instead comes across like a poor man's Count Dracula. That said, the temporal complexity of the novel is really clarified with a second voice, regardless how over the top it is.

</comment></comment></comment><comment><USER5> I don't know if it's just me. I listen to a lot of podcasts and audio lectures because, well, what else am I going to do while I do housework? But audiobooks I find pretty much impossible to listen to without my mind wandering, even if it's a book I'm interested in.

<comment><USER6> It's possible what you're doing takes too much higher order thinking. Try it while driving or walking, instead of housework!

<comment><USER7> Driving doesn't require higher order thinking?

I can't do anything else while I'm driving. I'm constantly looking at where people are; who's around me; and where I think other people are going.

Maybe it's just me but I couldn't possibly keep my concentration on a story being read to me while I drive.

<comment><USER8> Very different for me: unless I'm in a busy and unknown city, driving is pretty much autopilot for my brain.

I guess that is why so many people try to do things like texting while driving. Not saying that's a good thing, just that I think many people feel the same way and their minds want to occupy themselves with other, more interesting things.

In case you can't relate, I guess it would be similar to taking laundry out of a washing machine. It's hard to automate in the sense that you still have to operate that five-fingered hand and think about whether you grabbed something, whether something you're half-holding might fall between the basket and the washing machine (if you have such a gap, that's something to watch out for), so there is definitely some thought to it, but it's also definitely mind- numbing (imagine doing this half an hour without interruption). If this really took half an hour, I bet many people would try to use their free hand to text or scroll past news.

</comment></comment></comment></comment><comment><USER9> There is too much variance from reader to reader, narrator to narrator, and one type of material to another for surface-level studies to be helpful here.

People read and comprehend differently. For example, when reading it is very easy to skim, even when you don't intend to. In other words, reading too fast, such that you speed through parts you consider boring to get to parts you find more interesting. With an audio book, you cannot do this.

Also, distraction is not necessarily more of a problem in audio books than with printed material. Some people, myself included, can actually continue to read while their thoughts are in some other place. I often find myself reading one thing, while thinking of something else entirely, and having to go back and re-read what I just read. This is the mental equivalent of hitting the "30 second back" button on an audio book.

In general, I find myself absorbing audio books better than printed books, particularly when it comes to fiction. It forces me to take the book at an even pace, and thus I often come away with more detail and remember it better.

But the subject matter also makes a difference. I prefer audio books hands down for fiction, _unless_ the narrator is Ben-Stein-boring or difficult to listen to. For non-fiction, audio books may or may not have the edge. For a non-technical subject such as history, audio books have the edge. For all math, unfamiliar science, or anything that requires a slower, more detailed examination of a subject, printed books win every time.

</comment><comment><USER10> I only started listening to audiobooks when my commute grew to over an hour each way. They're great to pass the time and I learn a lot from nonfiction, but I really wish I could dogear sound snippets.

</comment><comment><USER11> I listen to audiobooks when I'm coding or on the bicycle. But most the books I listen to are kinda of "lesser qualility". Like I listen to this book called "stealing fire", it kinda of a new take on old business concepts. Had I actually sat down and read the book I would have been annoyed, that I wasted my time with it. But listening to it while doing something else made it seem okay. My retention was decent, there where times when I had to rewind. In the end, that's fine because the book wasn't that good.

I read real books on the kindle. Academic and interesting books that I want to completely get absorbed into.

It isn't said enough but I think that the kindle paper white is one of the best e readers. It does hurt the eyes, it has very connection to the internet so u won't get distracted. At the end of the day it just works great. (The OS/UX/UI is an little weird)

<comment><USER12> how can you focus on a book and write code? is it really so mechanical?

<comment><USER13> writing tests?

<comment><USER8> Depends on what kind of tests you're writing, but even there I'd say it takes too much concentration to do both. At least if you don't want to miss 50% of the fragment you're listening to.

</comment></comment></comment></comment><comment><USER14> I think it totally depends on who the reader is. Currently listening to Ed Thorpe's A Man for all Markets while I walk the dog each day. I wouldn't say he's the best speaker I've ever heard but just the fact that it's him has me gripped.

Dan Carlin's podcasts, I could listen to him all day.

<comment><USER15> Totally. A poor narrator can ruin the finest author's work. There are some narrators that are superb at characterisation and voicing and can pull you into a story completely. Then there are a lot in the middle and some that make a terrible job of it - yet never seem to fail to get repeat job offers.

Sadly I find Audible heavily over represent the poorest readers and quit my subscription over it years ago.

Author and narrator are equally important when I'm deciding whether to buy. The best narrators have me seeking out what they've narrated and see if there's anything else that appeals.

</comment></comment><comment><USER16> Audiobooks are much better for me than reading. If I read at the time I typically use audiobooks, I'd be dead _and_ arrested. Seriously though, I spend non-negligible time per day driving around, and audiobooks are a godsend.

</comment><comment><USER17> I use espeak to listen to text without having to rely on another human for reading it.

I find it's just another tool for getting information, one that's replaced skimming since it's less mental effort and higher retention. A lot of text doesn't need anything more to be understood, some I listen to multiple times, some I slow down to understand better, some I have to read to see in context of diagrams/maths/code and some I need to go through with pen and paper (or keyboard and computer).

An unexpected benefit for my own writing is that it highlights spelling errors and odd grammar much better than anything.

In general literary writing, like the article, is perfectly suited for listening to rather than reading. And at my current listening speed of ~750 wpm it frees up a lot of time.

</comment><comment><USER18> I just picked up audiobooks with a lot of skepticism a few months back. I was surprised to find they are actually very useful!

I live in Bangalore where a 2-3 hr daily commute is quite normal and audiobooks are very easy to adapt to.

Similar to reading, I feel audiobooks have the same issues related to adoption ... whatsapp, facebook, HN, disturbance from people and email. These distractors are pretty much eliminated while driving .. so the car is really a good place to listen!

I finished Skin in Game, Option-B, Growth Mindset so far and actually quite happy with the results. I must confess, the level of distractions in today's world is unfathomable and my resilience is quite sad.

</comment><comment><USER19> [http://journals.sagepub.com/doi/abs/10.1080/00986283.2010.48...](http://journals.sagepub.com/doi/abs/10.1080/00986283.2010.488542)

I cant tell what the podcast is about. If its something boring as 'course material' then the outcome is predictiable, its easy to get distracted and let your mind wander if you are listening to something boring.

But if you are listening to something captivating like the serial podcast then podcast is actually superior, audible cues by the narrator add another dimension to the experience.

</comment><comment><USER20> For me - I prefer fiction audiobooks over non-fiction. Non-fiction often requires re-reading certain paragraphs or flicking between sections to refresh my memory on certain points. But with a good fiction book I can just relax and let the words wash over me and get lost in the story.

My favourite book on Audible is The Green Mile by Stephen King read by Frank Muller. It's an experience that can't be matched by a physical book. The narration is top notch and you feel really invested in the story.

</comment><comment><USER21> Regardless of this. Reading is something I either do to learn something interesting or to relax. Depending on this I choose my medium for consumption.

Frankly ebooks (kindle) have my preference now for almost everything except books containing code or mathematics. Paper books are better to me in that domain.

If something is "good" for your specific use case will depend on many things. Convenience being a factor as well as personal preference.

</comment><comment><USER22> For me, no, written books are better than audio books, but audio books are better when I'm in a situation where I can't be reading (commute in car, jogging, cooking, etc).

It makes sense that audiobooks have less comprehension because people tend to listen to audio books when they are engaged in other activities at the same time. With written books people are usually more focused.

<comment><USER6> > It makes sense that audiobooks have less comprehension...

And yet, interestingly, their study didn't find any significant difference in comprehension.

</comment></comment><comment><USER23> I love reading an actual book (iPad is a bit of a pain), but I'm in the car over an hour a day. So, I do like audiobooks and have an Audible subscription.

My enjoyment really depends on the narrator. An appropriate to the material narrator is a joy, but some are just awful. The authors reads 1776 and he is awesome. I do love the radio dramas with a full cast.

</comment><comment><USER24> With audiobooks and podcasts, I don't feel anywhere near the same levels of retention compared with reading a book or watching a video. Even when wholly focused on the audio during a bus commute, my mind doesn't have the same levels of immersion when reading a book or news article.

<comment><USER25> Have you tried increasing the speed of the audio?

I find retention and understanding to be greatly increased when I don't get bored or distracted in between words and phrases.

<comment><USER26> Interesting, I've generally had the exact opposite occur for me, though it depends on narrator and context.

I typically listen while driving. Anything past 1.25x was an illusion of productivity trap. I could hear the words and understand the concepts, but there wasn't any time to digest what I'd heard.

</comment></comment></comment><comment><USER27> Whatever captures most of your attention should be better for you in terms of comprehension and memorization. You can hardly read a book and pay attention to something else. You can walk and check your Instagram feed while listening to an audiobook.

<comment><USER28> Validity of this study might be disputable since I'm not as experienced scrutinizing scientific studies, but visual and auditory information is shown to have close corollary effect. Retention and comprehension is supposedly similar, so I agree with you. Engagement is definitely key.

[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3081613/#!po=8....](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3081613/#!po=8.92857)

</comment></comment><comment><USER29> That's not the question. It's whether audiobooks are as good for you as quietly sobbing wondering how many hours of your life you've given to the Sunol Grade.

</comment><comment><USER30> For me it depends a lot on the reader. With some readers I get totally absorbed whereas with other readersi can't keep listening although the content may be very good.

</comment><comment><USER31> I don't think people read because it's "good for them".

<comment><USER5> Oh, come on now. You don't think anyone ever read Virgil or Milton or the Bible or a dense history book more out of a desire for self-edification than from enjoyment? As Twain once said, "the classics are the books everyone wants to have read but nobody wants to read."

<comment><USER32> I don't think anyone (for acceptable tolerances of "anyone") reads those at all.

<comment><USER5> Are you being serious? You think nobody reads the Bible?

I've read all of them for what it's worth

</comment></comment></comment></comment><comment><USER33> There is lack of decently read audiobooks in English at any price, and the situation changes little over time. Dictors are horrible and even blockbuster titles like "The Name of the Wind" have poor recordings.

On the other hand, I have access to a wealth of audiobooks in Russian, ranging from free-as-in-beer recordings from Vlad Kopp, Serguey Kirsanov and Igor Knyazev to literally hundreds of $2-4$ offers on litres.ru.

Interpreting audiobooks is an art. Some audiobooks are great performances that influence popular culture, like "Hard to be a god", starring Leonid Yarmolnik. Vlad Kopp gathers concert halls for his live reading performances. Igor Knyazev has a cult following.

If there is an example of copyright stifling culture, this is it. Russians had laxist copyright rules for a while, and the art of producing audiobooks flourished.

<comment><USER34> I was going to ask about this (English ones being badly read) - I tried a few out years ago, and...every non-English name, place, book, etc was grossly mispronounced. As if somehow no-one realized that was important. And I really would rather not hear something written by an English, French or German writer read in a US accent, mispronunciations or not.

I used to have a few cassette tapes with famous poets reading their own poems, they were amazing.</comment></comment>


BP Cancels Dividend to Set Aside $20 Billion for Spill Costs - <AUTHOR> http://www.bloomberg.com/apps/news?pid=20601087&sid=aVmsnatLpG4U&pos=1

<comment><USER2> The canceling of the dividend was inevitable, contrary to news stories from last week. BP is worth a lot more than the cleanup costs, but they rightly fear cash flow problems. That's how profitable companies go bankrupt -- they run out of cash. Paying out a cash dividend during a time where near-term cash demands cannot be calculated would be crazy.

</comment><comment><USER3> It is amazing to see how US president can effectively demand something of a private company. No courts needed anymore.

<comment><USER4> What if the actual cost ends up ballooning past $20bn? perhaps there was a backroom agreement to cap the liability costs?

<comment><USER5> the $20bn is a floor, not a ceiling. This entire regulatory political process is just getting warmed up.

<comment><USER6> it's neither a floor, nor ceiling. it's just an estimation.

</comment></comment></comment></comment><comment><USER7> This was the logical thing to do to avoid more bad press. But greed often trumps logic. I'm surprised they did this.

<comment><USER8> This was the logical thing to do to avoid more bad press _in the USA_.

It's not going to go down too great here in the UK (either for Obama or BP)

EDIT: I should point out, for those that don't know, BP dividends are pretty important to a big portion of UK pension funds. I'm not 100% certain how exactly this affects them, but it is not good (they have been teetering for a while due to the financial crisia as well). BTW, yes, I agree it is silly we rely on them so much.

The Times reported the other day that this could wipe out up to 1/3 of UK pension funds, and Robert Peston is was waffling about the fact it could be enough to collapse parts of the economy - I don't actually subscribe to that (I ran some of their numbers and it's nowhere near that bad IMO) but if you get Brits glowering at you for a few weeks it might be because they believed it :)

<comment><USER9> It's not a good situation either way, but it's not real fair of the retirees to take dividends from a company that just destroyed the livelihoods of tens of thousands of people. BP is obligated to take care of its mess and that should come before paying shareholders. It sucks, but that's business.

Stocks aren't risk free, even big dividend paying ones.

<comment><USER8> Yeh I know. Tbh I think they could easily pay the diidend and the clean up bill. They aren't going to need $20bn tomorrow.

Also; collapsing pension funds affects the unretired too. Potentially it could leave millions in the cold - so that complicates it more.

And I would point out it has not been established who was at fault (though clearly BP must pay)

</comment></comment></comment></comment><comment><USER10> here is the video of the president's remarks after the meeting. he describes some of the details about the account:

<http://www.youtube.com/watch?v=tnbF99nYWQQ>

</comment><comment><USER11> Why didn't bp stock go down today? I'd think ending dividends would be a huge deal.

<comment><USER12> Since the probability of this was high, it would already be factored into the current price. The announcement just confirmed it.

</comment></comment><comment><USER13> Just look in the mirror next time you're at the filling station for a minute to remind yourselves why we're in this mess . . .

<comment><USER14> Or when you eat your meat raised on corn raised on petroleum based fertilizer. Or when you realize that 70% of your waste is plastic. Or when you realize that the reason 'they don't build 'em like they used to' is because they build 'em all out of plastic nowadays or other petroleum derivatives.

Filling up your car is the least of the problems. You can take transit tomorrow. You can't stop eating.

<comment><USER15> I can stop eating plastic tomorrow. Wait a minute.

</comment></comment></comment><comment><USER15> If BP truly carries out this out, it sounds like good news to me.</comment>


Bayes' Theorem Illustrated - <AUTHOR> http://lesswrong.com/lw/2b0/bayes_theorem_illustrated_my_way/

<comment><USER2> Bayes' rule is quite easy to understand as a Venn diagram, though the linked article doesn't seem to use this fact. But here's a blog-post that does: <http://oscarbonilla.com/2009/05/visualizing-bayes-theorem/>

<comment><USER3> This works well for the cancer example. I'm not picturing how it would work for the Monty Hall problem. Guess it's time to open the drawing app.

<comment><USER4> From the same author, <http://oscarbonilla.com/2009/05/the-monty-hall- problem/>

</comment></comment></comment><comment><USER5> There should be a law that you only get one paragraph and one figure when explaining Bayes' rule.

<comment><USER6> I'll give it a shot and get back to you. Should be doable.

</comment></comment><comment><USER7> I don't quite get the steps after cutting off the other branches. The original diagram didn't seem to get updated.

<comment><USER3> The original diagram isn't important any more. It is replaced by the new values that are the results of the experiment. Kind of like:

      world = get_world()
      for experiment in experiments():
        world = combine(world, experiment())

The original world doesn't exist after the first experiment. The experiment has provided us a new world.

</comment></comment><comment><USER8> lovely explanation , very clear!</comment>