MySQL is a Better NoSQL - <AUTHOR> http://engineering.wix.com/2015/12/10/scaling-to-100m-mysql-is-a-better-nosql/ <comment><USER2> Interesting that he advocates MySQL. PostgreSQL can index and interact with the JSON stored in it's columns, which make it a better choice as a NoSQL replacement.

[http://www.postgresql.org/docs/9.4/static/datatype- json.html](http://www.postgresql.org/docs/9.4/static/datatype-json.html)

<comment><USER3> The JSON datatype is only useful if you want to query on the blob, which is not the case in Wix's case.

<comment><USER4> But you tell to keep columns that need indexs outside of the JSON so you can query on them, which is not necessary with Postgres

</comment></comment></comment><comment><USER5> I did an extensive survey of NoSQL databases recently and for my particular requirements Postgres ended up being the best choice. I examined MySQL too in this particular survey. Can't remember why but its JSON handling didn't meet my needs.

Every time I consider alternative databases -and I've done so several times in the past ten years - I do a thorough examination and the answer always seems to come back to Postgres. I'm not a particular Postgres fanboy but the answer just ends up at the same place.

<comment><USER6> When and how did you evaluate PostgreSQL? Can you comment on PostgreSQL's horizontal scale?

<comment><USER5> I cannot comment on its horizontal scaling.

I can say however that Postgres, from what I understand, has nearly linear SMP vertical scaling up to 64 cores. There's an awful lot of headroom there. I read a long while back Jeff Atwood saying that StackOverflow ran on a single vertically scaled database server with MSSQL for a long time.

If I needed to go beyond vertical then I'd maybe horizontally scale in a custom manner based around the application data access characteristics, which plays a huge role in designing sensible horizontal scaling solutions.

<comment><USER6> Thank you for your response. I was asking the questions because when I was evaluating MySQL and PostgreSQL 3 years ago I ended up choosing MySQL due to its community and the rumor about difficulties in horizontal scaling of PostgreSQL even though I really liked PostgreSQL JSON support. I hear PostgreSQL is getting better at scaling horizontally although I do not know how good it is now.

<comment><USER5> Horizontal scaling comes with a who range of tradeoffs that you need to make and exactly how you horizontally scale I think has alot to do with how your application stores, reads and writes data.

</comment></comment></comment></comment></comment><comment><USER7> I'm going to question your knowledge of the domain immediately when your solution to a problem is to take away all of the advantages of SQL without any of the benefits that Cassandra or Redis provide.

To me this is akin to saying we don't need Haskell because Java now has lambda expressions.

<comment><AUTHOR> What are the benefits of Cassandra or Redis that I am missing, for this use case? We have the latency figures as good as Cassandra can get and we get a reliable engine to store data (something that Redis is not - read Aphir post about Redis)

The main advantage of MySQL that we keep is the rock solid platform with all the know-how to operate and manage.

<comment><USER7> For one, Cassandra's read/write throughput scales linearly as you add nodes.

I would agree that your use case is narrow, and as such MySQL _works_. But that doesn't mean it's ideal, and if your use case changes is objectively worse.

Most importantly you made a claim: "MySQL is a Better NoSQL". Where's the data for your claim? You found a niche use-case where using MySQL as a KV store _works_ but then claimed it's better.

If I see a nail, and you tell me whacking it with a crowbar is better than a hammer, you need to show me why. All you gave me was a schematic on how to use a crowbar as a hammer.

</comment></comment></comment><comment><USER8> MySQL is great and all, but if you want a better database that is considerably more powerful and supports NoSQL type scenarios: PostgreSQL. The fact that Postgres has supported working with JSON like key/value store data for a while now and it is quite decent, as well as giving you other options if you decide you want the traditional approach of tables.

<comment><AUTHOR> When we started with this use case, at 2008, PostgreSQL did not look so good. Today, to be honest, I'd probably try it for new projects, except for the vast experience with MySQL that we have at Wix

<comment><USER9> If interested, You may wish to make a first level comment so people can reply and ask questions about your blog post.

</comment></comment></comment><comment><USER10> I really hate any post that says "you don't really need this tool, this one does that job just fine for us"

You don't know my workload. You don't know my requirements. It is ok to make a post saying that a specific tool is wrong for these use cases, or that you believe that many people using a tool don't need it or would be better off with a different tool..... But don't act like you know my workload.

<comment><USER11> Did you read the article? It isn't saying that at all.

Even the introduction clearly explains that it is addressing a trend of developers using NoSQL because of hype rather than actually evaluating their use cases, and that the remainder of the article is how Wix found MySQL better for their specific scenario. They even give tips on when to know if MySQL is good for you for this use case.

It does not attempt to make sweeping statements about NoSQL or MySQL, nor does it prescribe a solution for every workload.

<comment><USER7> > It does not attempt to make sweeping statements about NoSQL or MySQL, nor > does it prescribe a solution for every workload.

The title is _literally_ a sweeping statement that MySQL is better. The first sentence in the introduction implies that the key-value store is an example of when _MySQL is better_.

Title: _Scaling to 100M: MySQL is a Better NoSQL_

First Sentence: _MySQL is a better NoSQL. When considering a NoSQL use case, such as key /value storage, MySQL makes more sense in terms of performance, ease of use, and stability._

That's nothing if it isn't a sweeping statement.

<comment><USER11> This is precisely why I asked if you read the article. But it seems you only read the title and the first sentence.

<comment><USER7> I'm not who you responded to, but for the record I read the entire article. The reason I pointed out the title and first sentence, is because those were where the op made sweeping statements, which you claimed he didn't.

A little defensive aren't we?

</comment></comment></comment></comment></comment><comment><USER12> _> Fields only exist to be indexed. If a field is not needed for an index, store it in one blob/text field (such as JSON or XML)._

A cautionary tale... It can be tempting to store serialized objects in your DB. This can be very dangerous, both for debugging and for migrations. Your data is coupled to your application in subtle ways and you can get stale references if you store any relationships in the "blob". JSON or XML isn't so terrible, at least a human can read that -- using a true BLOB is a kiss of death. A database is a handy abstraction for storing data, I highly recommend that you use this abstraction (and all abstractions) for humans first and robots second.

Granted, this is an article about optimization and in that regard I'm sure it yields benefits. If you must squeeze every last drop of juice out of a MySQL server, then do this -- just know that it comes with a price.

</comment><comment><USER13> > "MongoDB, Cassandra, Redis, or Hadoop"

Adding Hadoop in the mix tells me he doesn't know what a NoSQL is.

<comment><USER14> I'm not sure that I understand your point. It seems very reasonable to me to consider a raw HDFS as a type of NoSQL data storage mechanism, with other components of the Hadoop framework acting on top of it as query languages and other utilities.

Of course we can bikeshed all day and split hairs about the precise definitions, but in the spirit of pragmatism, I would absolutely put "Hadoop" as a form of NoSQL storage solution. In fact, I'd say the most distinct of the items mentioned is Redis, and Redis is the tool from this list that has use cases that tend to differ the most significantly from traditional RDBMSs (I'm thinking specifically cases where Redis is used as a buffering layer to help relieve congestion for a highly visited base data store). But even so, I still don't think it represents any sort of taxonomic error to put them all in the NoSQL category, at least for practical purposes.

<comment><USER13> hadoop != HDFS is my point.

</comment></comment></comment><comment><USER15> MySQL may work well for this small data set (200GB). Start working with 10s of TBs of data and you will start to understand why NoSQL stores were built.

<comment><USER16> My thought exactly. This is just a scale that can be solved either way; when you really can't fit your data on even a handful of machines with acceptable performance, then Cassandra can start to shine.

</comment></comment><comment><USER17> This is right and wrong in the same time. Not sure which more.

Storing JSON as TEXT is great, but you really only query the data based on the mySQL index.

What if you need to query based on the site_data?

This is really not NoSQL this is just a key value store with a JSON object that is not even native type to the database, you will still need to parse back/forth.

What about updating the data? You need to get the object and then you need to parse it, change it and send it back marshalled to TEXT that MySQL can understand.

Even as a KV store, using MySQL simplifies a lot of things but there are MUCH better solutions out there.

[EDIT] One other thing that this fails to mention is that TEXT in MySQL will in most cases go to disk to get the "document" which will be slower.

In Wix case, getting a website and having all the data available this is most likely not relevant, but if you want to get multiple rows at a time, this will become a consideration for you.

<comment><USER18> Use the last version of MySQL 5.7 that supports JSON natively:

[http://dev.mysql.com/doc/refman/5.7/en/json.html](http://dev.mysql.com/doc/refman/5.7/en/json.html)

</comment></comment><comment><USER19> Quick question - I'm confused about the comment "The nested query syntax ensures that we are doing only one round-trip to the database to run both SQL queries". Why is the nested syntax better than a regular join in this case?

Seems like a join would allow the query planner to decide how to carry out the query.

<comment><USER20> Author seems to be confused on how databases operate (especially since they really should just be using a KV store like Redis), because you're exactly right, the query would be the same as:

        select sites.* from sites join routes using (site_id) where route_id = ?

Assuming sites.site_id and routes.route_id are both primary keys, this query is going to perform identically using either syntax. It'll read 1 row from each table.

They could see a further performance gain by placing an index on routes (route_id, site_id) since the site_id could be retrieved from the b-tree and avoid a table hit entirely. But regardless, query syntax will not affect performance here.

<comment><USER21> You are right that this join query should be equivalent. However, with InnoDB there will not be much benefit from your suggested index. In InnoDB primary indexes are clustered. Hence, any column may be retrieved from the B-tree of the primary index.

<comment><USER22> Only if the columns are stored on-page with the index, which is not guaranteed -- it depends on what other columns exist in the table, etc.

</comment></comment></comment></comment><comment><USER23> Title feels a bit faceitous because the article's use case is more akin to a key value store, vs nosql in the schemaless, mongodb/cassandra sense.

Good write up though.

</comment><comment><USER24> If sharding, rebalancing and partitions didn't exist... And if 1600 rps were enough when nosql can reach 1M rps (600 times more)... And if that homemade replication infrastructure was as mature and supported as nosql dbs...

Then using MySQL as a nosql might work.

<comment><USER25> This comparison is a dangerous one without some kind of qualification. This performance difference is not inherent to the design of these systems like you seem to imply.

What use case and hardware are your hypothetical relational/non-relational database under where you get your 600 times speed-ups?

I can run a benchmark of a few hundred fast machines with sharded sqlite databases doing key-value and operating in RAM and get large numbers (any number I want), but they don't mean anything.

<comment><USER24> I brought the performance argument (among others) because the article does. When I read 100k I thought it was rps, not rpm. It would have been an achievement.

The achievable performance of dbs is linked to their horizontal scalability, and SQL does not scale horizontally because of the relational model. Subsets of SQL can be made to scale horizontally, like in Cassandra, without locks, transactions, joins, aggregations, etc... or with a homemade cluster like the one described in the article.

But it's not easy to shard a mysql or sqlite system. It's very hard to rebalance a cluster. It's very hard to make it work during partitions. Paxos or Raft are difficult. Most nosql dbs do that for you. MySQL doesn't.

So the argument of a "battle tested db" is weak if a mysql system must use custom built cluster management (custom built != battle tested)

Online games are a good use case where you need very high "50% write/50% read" throughput, but it's only one among others. Logging/timeseries is another use case, with 99% write.

As for the sqlite cluster: will you implement all the sharding/rebalancing/partition tolerance/CP database too? If not, you're comparing apples and oranges again.

MySQL has merits, but nosql dbs have different design goals: judging by the "battle tested" argument totally missed the point.

BTW, even a modest (2dbs + 1arbiter) mongodb cluster would handle 1600rps easily, and you'd get automatic failover and replication for free, with sharding baked-in if you need it tomorrow.

<comment><USER25> That's the thing though, I _can_ do 100k transactions per second with an RDBMS, it's not an achievement.

Whether a DBMS allows relations or not or uses SQL or not is an independent property of whether it has built in dynamic schema/graph/replication/failover/query distribution/sharding/rebalancing/distributed consistency solutions. And whether those solutions are built-in has little to do with whether solving them is possible.

If it's just that we are disappointed that the traditional database systems (which happen to be relational and SQL because these are elements of that tradition) feel like they don't need to solve these problems, then I absolutely agree.

The performance benefits of flattening your data model, avoiding indexing things you don't query against, sharding, using a distributed map reduce, etc. can all be had with SQL and an RDBMS, so speed is a poor argument for straying from the tradition, IMO.

If it's really about wanting a new generation of comprehensive platforms for solving distributed data management (all those features above) that's a great argument, but somehow it's always about speed. Of course distributing asynchronous writes across a cluster of cheap cloud VMs starved for disk IO is faster than single-point synchronous writes on one of those VMs, but is the operations overhead of orchestrating and monitoring that cluster really cheaper than provisioning the hardware it'd take to do the same throughput with a simpler traditional system? Not as often as I'd be had to believe.

</comment></comment></comment></comment><comment><USER26> This use case seems to be highly read oriented, which is fine, but really diminishes the value of distributed 'nosql' stores. The really hard thing to scale is massive writes. Cassandra's big differentiator, for instance, is it's ability to horizontally scale massively when it comes to writes. a million client writes per second, replicated over zones, type of performance.

Oh and by the way, 'vertical' scaling is kind of a silly concept. That just means, "i wasn't an idiot".

</comment><comment><USER27> Reminds me of:

[http://backchannel.org/blog/friendfeed-schemaless- mysql](http://backchannel.org/blog/friendfeed-schemaless-mysql)

</comment><comment><USER28> As this title demonstrates, NoSQL is no longer a useful term. (It was useful for a period of time when SQL-based RDBMs systems were quite predominant, so it could be used as a gross differentiator).

Now the best way to think about it is that there are database platforms with varying features, one of which is support for SQL. When you evaluate which platform to use, you should have a list of business-derived criteria, such as SQL support, support for various relational integrity constructs (i.e. foreign keys), latency for typical queries (e.g. Hive), fault tolerance, ACID compliance, partitioning schemes, read or write optimization, etc. and act accordingly.

"NoSQL" used to be shorthand for a vague subset of database features that usually involved relaxing data protection in favor of multi-server scalability, but now it just muddies the waters, especially as many NoSQL platforms now support SQL or a subset thereof.

<comment><AUTHOR> Big thumb up!!!

</comment></comment><comment><USER29> Might as well go the full route:

      CREATE TABLE `sites` (
        `site_id` varchar(50) NOT NULL,
        `owner_id` varchar(50) NOT NULL,
        `schema_version` varchar(10) NOT NULL DEFAULT '1.0',
        `site_data` text NOT NULL,
        `last_update_date` bigint NOT NULL,
        `route` varchar(255) NOT NULL,
        PRIMARY KEY (`site_id`)
      ) /*ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=16*/;

      select * from sites where route = ?

No join (truly, this time), no need for transaction (whether in the DB or softly in the application). If you want improvements in performance you need to stop using your DB as a way to model your _data_ and start using it as a way to model your _queries_. Considering that the _data_ is already stored in the site_data field, they already started on this path.

</comment><comment><USER30> This statement is nearly meaningless without context.

YesSQL is better than NoSQL _for some problems_ (I happen to think many of them.)

NoSQL is better than YesSQL _for some problems_ (I happen to think more of them than I thought a few years ago.)

I'm glad that YesSQL worked well for Wix in this case.

</comment><comment><USER31> This was done by FriendFeed back in 2009: [https://backchannel.org/blog/friendfeed-schemaless- mysql](https://backchannel.org/blog/friendfeed-schemaless-mysql)

</comment><comment><USER32> What about ease of setup? I'd take the NoSql setup any day. If in need of a super light, super quick db that is for a "non-enterprise" application, it's tough to beat NoSql...

<comment><AUTHOR> Which NoSQL are you referring too? Most are not that easy to implement (saying that while managing a few PBs of data in production with a few such tools)

</comment></comment><comment><USER33> that mapping from routes to sites seems also great to be stored in a Memcached machine, as it is probably set once and then stays the same for months if not years. Memcached and MySQL is always a great combo

<comment><AUTHOR> True. Memcached is a great tool and great for this use case. But when you get read latency of ~0.3 mSec from MySQL, why add another hop and another engine to the mix?

</comment></comment><comment><USER34> "Do not perform table alter commands. Table alter commands introduce locks and downtimes. Instead, use live migrations."

You know what avoids alter? Going schemaless.

<comment><USER35> Or using a more appropriate RDBMS that allows for online and transactional ALTER commands?

</comment></comment><comment><USER36> Great post Yoav! Thanks for sharing

</comment><comment><USER37> +1 for "do not use joins"

<comment><USER38> why

<comment><USER39> expense - see [http://stackoverflow.com/questions/2065754/is-there-any- gene...](http://stackoverflow.com/questions/2065754/is-there-any-general-rule- on-sql-query-complexity-vs-performance) which actually shows it fairly well.

(the stackoverflow response is a much better response than i could have written, hence the link)

<comment><USER40> Except that he did use a join in the article itself (formatted as a subquery, but still a join)</comment></comment></comment></comment>


Dove Experiment Aims to Change the Way You See Yourself - <AUTHOR> http://mashable.com/2013/04/15/dove-ad-beauty-sketches/

<comment> D-Train I was about to post this, but see that you did, lquist. Great share. It's a very interesting ad. Dove has been doing this for a while about women (especially) appreciating themselves. This is a creative and kind of sad way of realizing how critical women are about themselves.

Though, it'd be interesting to see if they only showed certain portraits. I'm sure there are some who have a little more self-confidence. But in general, I suppose these observations are true. A chick I'm seeing now was just comparing herself to those at her college...

I'm very curious about how men would have portrayed themselves.</comment>


No more excuses… Learn to podcast this week - <AUTHOR> http://blog.officehours.io/no-more-excuses-learn-to-podcast-this-week/ <comment><AUTHOR> After years of thinking about starting a podcast, I finally got one off the ground, with my friend Hans. (You can find it at [http://www.thekerfuffle.com](http://www.thekerfuffle.com), if you feel so inclined.)

I had a lot of questions, though, and googling these points often led to more questions than answers. Around that time, I realized that I do run a site that allows folks to get advice—and maybe I should use it. (Funny how it's tough to change even your own habits around such things.)

Anyway, I learned a lot, ranging from where to host, how to prepare, what equipment to use, and ways to promote the podcast. Additionally, a number of folks made recommendations I hadn't expected: like considering a limited-run podcast, so it didn't seem as daunting.

Along the way, I figured that others would probably benefit from some of the same talks, so we started this feature. In it, we've reached out to a number of our podcasting advisors, and asked them to offer some sessions.

If you have questions, feel free to drop by and request a session. These are all free of charge, and a great way to get a personal take on your podcasting questions.</comment>


TLS Configuration: Cipher Suites and Protocols - <AUTHOR> https://medium.com/@davetempleton/tls-configuration-cipher-suites-and-protocols-a01ee7005778 <comment><AUTHOR> Author here, if anyone has comments, questions, or suggestions for improvement.

I wrote this because I didn't see a good guide that explained the thought process that goes into choosing a cipher suite, so sysadmins could design the right cipher suite for themselves and not just copy a configuration from elsewhere.</comment>


The mysterious man in the world record-breaking hat isn't who he says he is - <AUTHOR> http://www.tampabay.com/investigations/2018/05/03/guinness-says-a-tampa-man-made-the-worlds-tallest-hat-there-is-no-record-of-his-existence/ <comment><AUTHOR> In a Borat-level transformation, a local artist appears to have set a Guinness World Record just to screw with the local media. It's magical.</comment>


China Enlists Its 'Great Firewall' to Block Bitcoin Websites - <AUTHOR> http://fortune.com/2018/02/05/bitcoin-china-website-ico-block-ban-firewall/ <comment><AUTHOR> Seems to have a big effect on all crypto currencies: [https://coinmarketcap.com/](https://coinmarketcap.com/)</comment>


Inside Vancouver's Brock Commons, World's Tallest Mass Timber Building (2017) - <AUTHOR> https://www.archdaily.com/879625/inside-vancouvers-brock-commons-the-worlds-tallest-timber-structured-building <comment><USER2> How is this building protected against termites and other wood eating pests?

<comment><USER3> I can't provide a specific answer but the whole field of Engineered Lumber works on these problems.

</comment></comment><comment><USER4> The speed of construction is due to prefab wood. Prefab concrete would be just as fast or faster.

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

It has nothing to do with wood. Wood could be easier on the environment though.

<comment><USER3> Prefabrication requires a higher level of design maturity as opposed to traditional construction and from my anecdotal experience this can provide a significant increase in speed itself.

I did a quick search to determine if cities built from wooden structures can act as carbon sinks and I came across this great overview of the carbon footprint of wood buildings[0]. Granted it was created by a special interest group.

0- PDF [http://www.awc.org/pdf/education/gb/ReThinkMag- GB500A-Evalua...](http://www.awc.org/pdf/education/gb/ReThinkMag- GB500A-EvaluatingCarbonFootprint-1511.pdf)

</comment></comment><comment><USER5> Much better link: [http://vancouver.housing.ubc.ca/residences/brock- commons/](http://vancouver.housing.ubc.ca/residences/brock-commons/)

</comment><comment><USER6> So when the building was complete, what were the final costs relative to an equivalent steel and concrete structure? The video said construction took 9-1/2 weeks but there was a lot of pre-planning, mock ups, etc. that wouldn't have necessarily been needed for the steel version. Those extra costs need to be factored in as well, at least until enough experience has been gathered to no longer require it.

<comment><USER5> It was finished in 2016, after eight months.

According to this article: [https://biv.com/article/2016/09/crews-complete- structure-rec...](https://biv.com/article/2016/09/crews-complete-structure- record-setting-timber-tow)

 _" The $51.5 million structure is on budget, and Metras expects any future buildings to cost less, as the Brock Commons budget also includes $4.45 million from external agencies to cover first-time costs of using mass timber on such a scale."_

</comment></comment><comment><USER7> There's another site I won't visit again. (modal popup to subscribe before I can even see the page)

</comment><comment><USER8> That was quite interesting, particularly the videos. Lots of use of pretty innovative techniques - 3d modelling, just in time delivery during construction, CNC for structural members & pre-fab parts (high precision for construction industry)

</comment><comment><USER9> T3 in Minneapolis feels much nicer! [https://www.archdaily.com/802831/t3-michael-green- architectu...](https://www.archdaily.com/802831/t3-michael-green-architecture)

<comment><USER5> Short. Looks like an office building, not residential: no balconies. (Do the windows even open? Good luck trying to feel good when HVAC is down.)

No ocean/mountain views.

</comment></comment><comment><USER10> Not to say this building isn't great, but are those two internal towers in the third image made of concrete there? Is that so to make the elevator shafts (fire resistant)?

<comment><USER11> Yes that's the code. They have to use a reinforced concrete structure that is earthquake resistant. It houses the elevators, the stair cases, and utilities. It's pretty standard everywhere for tall building.

<comment><USER12> Elevators are also long moving mechanical systems that need extreem reliability to be useful. There is still a place for the stability and rigidity of metal in such systems.

</comment></comment></comment><comment> dis-sys it is pretty misleading to call it a timber building, there are clearly two concrete and steel cores there.</comment>


Rakudo Star 2012.02 out – and the focus for 2012.03 (Perl6) - <AUTHOR> http://6guts.wordpress.com/2012/02/29/rakudo-star-2012-02-out-and-the-focus-for-2012-03/ <comment><AUTHOR> Link to official announcement: <http://rakudo.org/2012/02/28/rakudo- star-2012-02-released/></comment>


How Like.com Shut Down A Competitor–And Broke Up Its Funding Round - <AUTHOR> http://blogs.forbes.com/tomiogeron/2011/04/28/how-like-com-shut-down-a-competitor-and-broke-up-its-funding-round/ <comment><USER2> Like has always been a problematic company. I've heard from many people that they didn't even use computer vision or any algorithms for most of their matching, and a lot of it was done by hand in other countries. I don't really know why Google bought them, to be honest. Even the product they launched at google, Boutiques.com, had a 50% decline in traffic after launch: <http://siteanalytics.compete.com/boutiques.com/>. Good domain names only get you so far.

<comment><USER3> While I do not agree with the patent bullying especially because the said patent was very general, I would not go to the extent to say "they didn't even use computer vision or any algorithms for most of their matching". I know a couple of smart computer vision engineers who worked there, and probably the stuff done "by hand in other countries" was getting the training data and getting a lot of it, which I think is fair.

</comment></comment><comment><USER4> Having been bullied by a bigger company in the past, I feel really bad for Modista founders.

My best wishes to Arlo and AJ. What comes around goes around, the valley is a small place and these things don't go unnoticed.

</comment><comment><USER5> The problem with cases like this is that the only reason Like.com was able to get away with it is because of how much money they had.

The patent system, in cases like this, is merely camouflage for anti- competitive drive-bys.

</comment><comment><USER6> What concerns me is that the patent troll mindset has filtered down from the usual big players to the little guys who are starting out. I think if you've done something unique like come up with a cure for cancer you deserve a patent, but on the other hand so many patents seem just a bit too vague.

<comment><USER7> >I think if you've done something unique like come up with a cure for cancer you deserve a patent

even in this case i'd say it depends on whether it was done on your own dime or public money

<comment><USER8> Unless the public money came with a string that says, "no patents" then its fair game (its not unusual for the university, for example, to have first right at patents if done there). Everything is done partially on public money. You use public money to drive the paved roads. Public money to build and research the foundation of the web. Public money to have police and a judicial system so people don't simply take your ideal completely with no attribution. Public money that funded prior cancer research that you read.

<comment><USER7> >Unless the public money came with a string that says, "no patents" then its fair game (its not unusual for the university, for example, to have first right at patents if done there).

that just shows wide-spread mismanagement of public money. At all the private companies i've worked, i signed the document that all my patents done on the company's dime, are to belong to the company.

>You use public money to drive the paved roads.

And thus the contractor-builder of the road can't charge the toll on the road (well, except for the cases when he got a sweet deal what normal people would consider mismanagement of public funds )

<comment><USER8> _that just shows wide-spread mismanagement of public money. At all the private companies i've worked, i signed the document that all my patents done on the company's dime, are to belong to the company_

But private companies are very different than governments. Private companies generally want to make sure that no one else has this IP, but themselves.

A government, at least a capitalist one, is generally happy that you're incentivized to invent and create patents. Although they may want to also have use for themself, but it needn't be exclusive (like your employers desire).

In US we have the Bayh-Dole Act which gives you ownership of your invention, but of course, the US has a "non-exclusive, non-transferable, irrevocable, paid-up license to practice or have practiced on its behalf throughout the world".

I don't understand how you can consider that mismanagement of public funds. It seems to satisfy both the capitalist angle and the greater good.

And to be clear this only applies if you take direct funding from the government, typically in the form of a grant, where you sign a specific agreement. Using public goods, such as the roads, street lights, food inspection, don't impose any obligation on your part -- except taxation.

<comment><USER7> >I don't understand how you can consider that mismanagement of public funds. It seems to satisfy both the capitalist angle and the greater good.

As a shareholder(taxpayer) of this corporation(government) i think it is a mismanagement of the funds to allow for the uncompensated re-assignment of the rights to the direct products of the direct investments done by the corporation. You think it is not. Difference of opinions. As in the example i mentioned before - when contractor/builder gets full rights for the toll on the road he merely built and when he was paid in full for the work - i'd see this as mismanagement, and you'd see this as the capitalist angle and the greater good. Difference of opinions.

<comment><USER8> _i'd see this as mismanagement, and you'd see this as the capitalist angle and the greater good. Difference of opinions._

Fair enough... maybe it's obvious from the name: Vlad _Russian_ :-)

<comment><USER7> yep. I've got a chance to study Marxism theory which clearly state main principle of capitalism as "whoever owns the investment owns the profits"

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> From Figure 5 of Like.com's patent:

 _510\. User selects an image of a merchandise > 520\. Perform image analysis > 530\. Perform similarity operation to identify merchandise that is similar > 540\. Return result with images of merchandise deemed similar_

From Fortune column, a description of what Modista could do:

 _It could take a particular handbag and match it to other similarly shaped and colored items._

According to Kumar, "Modista's technology was better". Then, Kumar "contends that the patent should not have been given in the first place" and "Modista should've been given the chance to compete on its own merits."

I don't know about the validity of the Like.com patent or how different Modista's processes are from those described in the claims of the Like.com patent. But, looking at the patent issue from another perspective: How would Kumar feel if one of K9's other portfolio companies -- such as twilio, whose cofounders have filed for several patents -- learned about an upstart with a very similar technology? Would he be willing to let the company compete with twilio on its own merits? Or would he want twilio to play hardball, too?

<comment><USER3> Image similarity search has been around since eternity (read early 90's), and a patent claim that _Perform similarity operation to identify merchandise that is similar_ (510 -- 540) should not have been awarded in the first place.

<comment><USER10> It's patenting a math theorem by replacing the generic variables with more concrete objects. This too could be patented: _"a technique for calculating the number of facade bricks of a stone pyramidal structure"_

</comment></comment></comment><comment><USER11> The lawsuit's a bit aggressive, but taking a meeting with a VC when you're not fundraising in order to mess with someone else's raise is fairly common.

<comment><USER8> Really? I had never come across that myself. Are there any stories you can relay yourself or links? Very interesting.

<comment><USER11> Probably not in public, no.

The next time you get called by a junior analyst at a time when you're not raising and haven't gotten any tech press, it's likely because someone else is raising -- ringing up competitors is a pretty standard part of due diligence.

You can sometimes figure out who's out raising just by asking your own investors -- they tend to know what's going on at other firms.

Not everyone is sweetness and light in this situation. Really, blocking a competitor from raising is the only reason why you should take the call.

</comment></comment></comment><comment><USER12> The author makes a big mistake saying 'If [Modista] was better than Like.com it would win'.

The best technology doesn't always win, and I'd argue often doesn't due to a myriad of issues.

</comment><comment><USER13> 'Shutting down a competitor' is known colloquially outside Silicon Valley as _winning_.

<comment><USER14> Which is why the US is spiraling down the toilet while Silicon Valley is doing better than ever.

</comment></comment><comment><USER15> Hmm, underwhelmed to be sure.

The blog article would be better if it wasn't 100% whine. Linking the original [1] would have been better HN material.

Nobody told the founders at Modista to file a patent on their work? There's $2500 bucks that would have been well spent. They could have simultaneously achieved patent protection and a re-examination of Like.com's patent. Since Like's would come up as an office action, they would turn around and send all the prior art that shows why their idea isn't like that patent but that even that Like's patent didn't have any original ideas, which internally could have started other wheels rolling.

Like it or not, you have to file patents for things that you are doing that are cool. This does two things for you, one it brings out people who might have applied for or done something similar, and two it gives you a way to prevent other people from jumping into your space. The Like.com guys did that, the Modista folks did not.

[1] <http://k9ventures.com/blog/2011/04/27/modista/>

<comment><USER16> Good luck getting a decent patent attorney for $2500... order of magnitude or 2 off.

<comment><USER15> Actually I've filed several patents, have a few that have issued over the years too. I hope you weren't mislead by some attorney that you have to be a lawyer to file a patent.

I don't know if you read stuff from Nolo press [1] but we are fortunate that you can get the help you need for filing a patent in Sunnyvale [2] The last time I checked the filing fee was like $1500. You do need to put it in the form required for the application, and you need to respond when the patent examiner sends your patent back with questions.

Attorneys are nice, they provide a service which takes a lot of worry out of things and some of them are pretty aggressive at getting the patent issued even if the claims whittle down to something fairly obscure but they do charge by the hour. The last time I saw the bill for doing the patent paperwork it was about $12,000 total.

[1] <http://www.nolo.com/products/patent-it-yourself-PAT.html>

[2] [http://sunnyvale.ca.gov/Departments/SunnyvalePublicLibrary/R...](http://sunnyvale.ca.gov/Departments/SunnyvalePublicLibrary/ResearchOnline/PatentsandTrademarks.aspx)

<comment><USER17> useful info, thanks, though even a $2500 could be a problem for a startup, not even $12000</comment></comment></comment></comment>


Prime Factorization of the Real Numbers - <AUTHOR> https://scrollto.com/canonical-factorization-of-reals/ <comment><USER2> This is a function defined in the real numbers (that are not 0? positive?), but it's not a prime factorization. (Never mind a "unique canonical" factorization as the original title says.)

To define an extension of a well known function it's important that it preserve as much of the original properties as possible. This is an informal requirement, and one of the dark secrets of math is that the definitions are made up and are only a social construct. [1] But after a few years in math you get a good sense of what is a good extension and what is a bad extension. This is a bad extension.

One of the most important properties of the prime factorization is that it behaves good with multiplication. i.e. if

      A = 2^x * 3^y * 5^z
      B = 2^p * 3^q * 5^r

then

      A * B = 2^(x+p) * 3^(y+q) * 5^(z+r)

and this extension doesn't have this property. For example:

      2 = "2^1 ; 3^0 ; 5^0"
      2.5 = "2^(1/2) ; 3^(1/2) ; 5^0"
      2 * 2.5 = 5 = "2^0 ; 3^0 ; 5^1"
                  ≠ "2^(1+1/2) ; 3^(1/2) ; 5^0"

\---

It is useful to compare it with a good extension. (This is also not standard.) You can define a "prime factorization" of the rational numbers if you allow negative exponents, so the "prime factorization" is the difference between the numerator and the denominator. (this is good, even for the multiple ways to write a fraction)

      2 = 2^1 * 3^0 * 5^0
      2.5 = 2^(-1) * 3^0 * 5^1
      2 * 2.5 = 5 = 2^0 * 3^0 * 5^1
                  ≠ 2^(1-1) * 3^0 * 5^(0+1)

IIRC this is not a standard construction, but there are some similar construction like the p-adic order [https://en.wikipedia.org/wiki/P-adic_order](https://en.wikipedia.org/wiki/P-adic_order)

I think that this can even be extended to some irrational numbers like

      sqrt(2) = 2^(1/2) * 3^0 * 5^0

but I should check the details. To extend this to all the (positive) real numbers I think it is necessary to use a non numerable base, or something as nasty as that, but this would be far away from a unique and canonical definition.

[1] [https://en.wikipedia.org/wiki/Natural_number#Notation](https://en.wikipedia.org/wiki/Natural_number#Notation)

<comment><AUTHOR> I thank you for the goodies that I will look into. I guess its just a pairing function using the primes .. a decomposition. Guess I oversold it.

But be aware that your tuple for 2.5 is wrong. Sqrt(6) isn't even 2.5.

In[389]:= CanonicalRealFactorization[2.5]

Out[389]= <|2 -> 0.44966, 3 -> 0.55034|>

What you probably aim for is a UFD domain. I'll definitely investigate your links. Thank you!

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

<comment><USER2> [sorry for the delay]

UPS. I totally missed the log in the definition. My example of 2.5 is wrong (slightly wrong :))

Anyway, the proposed factorization of 2.5 is something that involves only 2 and 3, but if you multiply it by 2 then magically a 5 appears. So the main problem is still there.

I think that a UFD is not a structure similar to your idea, in particular it doesn't use fractional exponents.

My idea was to use R as a Q-vector space and use the base {log(2); log(3); log(5); log(7); log(11); ...}, but to complete this base you must use the Axiom of Choice, so you get a lot of crazy values, not only the logarithm of the primes. Then the idea is to use this base to express the logarithm of the number.

For example, if x=12 then log(12) = 2 * log(2) + 1 * log(3) that is equivalent to 12 = 2^2 * 3. This construction provides good values for sqrt(2), 1/6 and other simple algebraic numbers. The problem is that if you pick something like pi, you get a decomposition that is not very meaningful.

<comment><AUTHOR> Right - the error is still present despite your mistake. I understand that I wrote a poor extension. I see what you are doing with the logs, but how do we know that all irrationals and reals are targeted by the log basis - and I think you mention it with regard to pi -- won't we end up with an infinite number of basis elements / factors? I don't want an infinite factorization for reals with a finite komogorolov complexity - there must be a way to get a basis that is finite for reals that have finite descriptions (yet infinite digits.) Because nomatter what, the reals that have infinite descriptions will only be provably factorized by AC, not actually factorized in a tangible sense. And those cases are less interesting to me because I want the utility more for practical investigation of number theory, not the 10th lemma in a non constructive proof.

<comment><USER2> Just to clarify, each number will have a finite "factorization" using the decomposition in the basis of the Vector Space. The problem is that the base is so big that it is not very meaningful.

To allow an infinite decomposition you must add a topology or a metric to the space, so there is possible to define a convergence of the infinite sum. This are for example [https://en.wikipedia.org/wiki/Schauder_basis](https://en.wikipedia.org/wiki/Schauder_basis) and [https://en.wikipedia.org/wiki/Hilbert_space#Orthonormal_base...](https://en.wikipedia.org/wiki/Hilbert_space#Orthonormal_bases) . They are not basis in the Vector Space sense, they are an extension. :)

The usual metric doesn't play nice with factorization, so the problem is to choose the right metric. There is s standard trick to use the p-adic order in rationals, but I'm not sure if something similar is defined for multiple primes (It should be possible.) But if you try to complete the rationals with the new metric, you don't get the real numbers, you get a different set.

\--

One recommendation is to think first were are you going to use the new definition/extension. There are just to many form to extend a definition, but it's very difficult to choose the right one (whatever it means). If you know where you are going to use it, you can try to make a tradeoff to get something similar enough to the old definition and something big enough to include more interesting cases.

<comment><AUTHOR> I'm thinking the only reason this is difficult is because we don't have prime- based formulas for all the interesting reals we care about enough to name. That makes this a lifelong quest to solve but probably other things need to be tackled first in order to make way for it. Thoughts?

<comment><USER2> Probably you need 3 or 4 semesters of Algebra classes in the university to understand the details. I'll try to explain the main ideas, but this is not my specialization so I don't remember the details :(. Too much Analysis in my life...

A possible way to extend the integer is to consider the Gaussian Integers, that are the numbers a+bi, where a and b are integers and i^2=-1. [https://en.wikipedia.org/wiki/Gaussian_integer](https://en.wikipedia.org/wiki/Gaussian_integer) They have an unique factorization and primes. Some of the normal primes are still primes, for example 3, 7, ... and some of the normal primes are split, foe example 5 = (2+i) * (2-i) . Now 2+i and 2-i are the new primes. Anyway, you still have primes and unique factorization and can live happily there.

Another extensions are a+b.i.sqrt(d) aka Z[sqrt(-d)]. In the case d=2 and d=3 you still have primes and unique factorization. But if you consider d=5 or more, you don't have primes or unique factorization (see for example [https://math.stackexchange.com/questions/1141412/mathbb-z- sq...](https://math.stackexchange.com/questions/1141412/mathbb-z-sqrt-5-is- not-a-ufd) , d=14 is apparently also a good value to get easy examples)

But this examples are extensions of the integer numbers in the complex numbers. You can make similar examples with the real version, i.e. the numbers a+b.sqrt(d) aka Z[sqrt(d)] I tried to use google to find an example of where there is no unique factorization, but I failed. I suspect that perhaps there is an easy way to proof that all of them but I didn't find it now and I'm too lazy to try to prove it. I'm not sure.

Anyway, when you add more roots, you have more problems. You can use the numbers a+b.cubicroot(d)+c.cubicroot(d^2) and try to analyze if they have unique factorization. This is related for example to the proof of the Last Fermat Theorem. The idea is to extend the integers to some more general set of numbers, and if you assume that there are primes and unique factorization the proof is not very difficult. For small exponents the extension use only square roots or cubic roots and it's not too difficult. But for big exponents the idea of unique factorization of the extended numbers fails. Try to look at the history part of [https://en.wikipedia.org/wiki/Fermat%27s_Last_Theorem](https://en.wikipedia.org/wiki/Fermat%27s_Last_Theorem)

So ... I don't remember the details now, but I suspect that for a general (algebraic) number it is not possible to have a good generalization of primes.</comment></comment></comment></comment></comment></comment></comment>


Tony Abbott hacked after posting boarding pass on Instagram - <AUTHOR> https://www.bbc.com/news/world-australia-54193764 <comment><USER2> Existing discussion: [https://news.ycombinator.com/item?id=24488224](https://news.ycombinator.com/item?id=24488224)

<comment><AUTHOR> Thanks. Just thought the original post was very long and interesting that BBC picked it up.</comment></comment>


The IT world's love-hate relationship with OpenStack - <AUTHOR> http://gigaom.com/cloud/the-it-worlds-love-hate-relationship-with-openstack/ <comment><USER2> Having spent a lot of time with OpenStack, CloudStack and a number of other cloud platforms (OnApp, Hexagrid and others) over the past two years I came to a conclusion about OpenStack. It's like a bag of dough. Which is great if you're trying to make bread. But if what you want to make is a sandwich, it's not remotely there.

What I mean by that is, OpenStack seems very immature despite how much effort has gone into it. It's still missing a lot of features that, if you're trying to turn it into a commercial cloud platform, are necessary.

CloudStack, to me, seems more complete. I've been working with it for a couple months now and have been very happy with it. It's what we'll be rolling out to production hopefully later this year.

<comment><USER3> > It's still missing a lot of features that, if you're trying to turn it into > a commercial cloud platform, are necessary.

Could you elaborate on this a bit?

<comment><USER2> One big issue is usage records. Last I checked OpenStack didn't have good API calls for collecting usage data for users/VMs. It was one of those things that was being worked on but wasn't really fully baked yet. CloudStack has a great implementation already there and fully functional.

<comment><USER4> I guess it depends on what perspective you're looking for. OpenStack sends usage information to an AMQP queue for consumption. This is generally for use by the provider and not the end-user however.

This is how the currently deployed public clouds collect usage data.

<comment><USER2> Like I said, it doesn't provide nice simple API calls for collecting usage information. You have to collect it yourself (from the queue, using PSHB or something.) Then you have to then make your own interface for your billing system to then request records it is interested in from this collection.

CloudStack providing simple API calls that allow you to request usage for any time period is much nicer. It can interface more directly with a billing system.

It's just one of the examples of OpenStack seeming to be kind of "halfway there", whereas CloudStack is much closer to being ready to go.

<comment><USER4> The queue of usage events is an API for collecting usage information, but it sounds like it's not as high a layer as you'd like to see.

There is also the (new) Ceilometer project which sounds like it implements what you're looking for:

<https://github.com/stackforge/ceilometer>

It is new, so it's probably not as mature as other options, but it has had a lot of activity recently.

</comment></comment></comment></comment></comment></comment><comment><USER5> There is no doubt that the velocity Amazon ships features is a challenge to both OpenStack and CloudStack.

OTOH, I've been very impressed with HP Cloud (which is OpenStack based). It's true that it isn't yet feature-comparable with Amazon (if you use _all_ the features of Amazon), but for most EC2/S3/CloudFront users then the HP Cloud combination of Compute (Nova)/Storage (Swift)/CDN (Akamai) matches up well.

Following the dev list, and it is clear that OpenStack comes from Operations rather than Software roots. For example, there is a lot of effort and discussion around the command line tools, but the edge cases in the actual web interfaces aren't well documented at all. (I"ve heard that CloudStack tends the other way, but I don't follow that as closely).

I recently ran a survey[1] that showed that over 50% of users have resources with more than one provider. To me that shows that there is room for things like OpenStack.

[1] <http://fifthvertex.com/2012/08/07/cloud-tools-survey/>

</comment><comment><USER6> Having looked into and setup test implementations of Cloudstack, Openstack, Opennebula and a few others... I have to say I was not that impressed with the current state of Openstack.

For starters the documentation left much to be desired. An example of this was the implementation of their XCP support. It exists, it's a thing in the stack... but good luck implementing this based off of the documentation! They fail to mention that it isn't really possible without an extreme amount of hacking. In general the documentation leaves a lot to be desired in my opinion, and for a project seeking as much influence on the cloud space as Openstack is, this is a big miss.

Cloudstack has its own issues, but was a reasonably well documented project with a clear implementation path. To note though, is that comparing their XCP/Xenserver compatibility isn't fair since Citrix sponsors this project...

I think one of the problems with Openstack is it is trying to be too many things when the core foundation of the software does not seem to be fully 'defined' yet.

</comment><comment><USER7> What about someone like Joyent (www.joyent.com) vs OpenStack? They're more of a software player but claim to have a cloud stack that operates more efficiently than others.

<comment><USER6> You're talking about smartOS I'm assuming? I'm not certain the comparison is apt. With smartOS you're just being given a node platform, with Openstack you have the entire management platform.

<comment><USER8> Well i think he is referring to Smart DataCenter, which runs on Smart OS etc.

<comment><USER7> Yep Smart Data Center.</comment></comment></comment></comment>


Startup creates first real money iPhone/iPad poker site - <AUTHOR> http://blog.switchpoker.com/

<comment><AUTHOR> For those of you own an iPhone or iPad and play online poker, you'll know that there is unfortunately where to play poker (for real money) using it.

I've been reading HN for over 2 years and seeing the number of great web apps that have been created by 1 - 4 person startups here gave me the push I needed to get a small team together and do something about it. Earlier this year we decided to create the first real money poker site for iPhone and iPad users.

The user interface currently falls short of the standard set by some of the HNers here, but I'm working to improve it. Please give me your feedback. The real money tables won't be launched for another two weeks, so there's still lots of time for improvement.

</comment><comment><USER3> I've always been curious about the legalities of running an online real-money poker site. I see you're based in Costa Rica, where (presumably) this service is legal - how does the illegality of this in the US play into your business plan?

</comment><comment><USER4> I've been joking about this with my roommate (hardcore poker player i.e. 4 or 5 hrs a day), the day poker comes out for the iPhone he is done. I'm surprised it took this long, the big sites dropped the ball.

<comment><USER5> Why would a hardcore player want to play on his phone? Away from poker tracker, multi-tabling, etc? Seems risky, but might attract enough fish to be worthwhile.

<comment><USER3> Is this intended for the hardcore player? Seems like those guys would have such a customized/assisted setup on their primary machines that they would have no incentive or desire to play on something so restricted as an iPad.

Not my product, but I'd imagine this is aimed at more casual players - <USER2> example, college students. People who would have no problems playing a one- hour session sitting in a Starbucks while waiting for something else, as opposed to the people who play multi-hour sessions on multiple tables professionally. The poker equivalent of scratch-and-win lottery players, as compared to players of casino games.

<comment><USER5> I completely agree. I was specifically asking krschultz why he thinks his hardcore poker-playing roommate would be interested.

</comment></comment></comment></comment><comment><USER6> If they can get a app in the App Store, Apple's walled garden would be perfect at keeping bots out.

<comment><USER7> I doubt that; jailbreaking is relatively trivial and that gets you your bot software on the phone. If I'm playing online poker with bots and approaching this as a money making venture, step two is buy 10 iPhones off Craigslist.

The portability of the iPhone means I can sit around different coffee shops and use their wifi for an afternoon, or better yet, pay someone else in coffee and doughnuts to watch my backpack for the afternoon.

</comment></comment><comment><USER8> But what if Apple doesn't allow it? How many people would jailbreak their phone to play poker?

<comment><AUTHOR> The game is playable through Mobile Safari, it isn't an App Store App.

To play a user only needs to browse to the website. There is no need to download an App.

</comment></comment><comment><USER9> This is also illegal!

<comment><USER10> Why would it be illegal where you are?</comment></comment>


Global war on smoking fired up by US proposal to cut nicotine - <AUTHOR> https://www.bloomberg.com/news/articles/2017-08-09/global-war-on-smoking-fired-up-by-u-s-proposal-to-cut-nicotine <comment><USER2> Cigarette sellers are drug dealers. Period.</comment>


How Apple's New Face ID Works (Infrared Projector, Like MS Kinect) - <AUTHOR> http://gizmodo.com/how-apples-new-face-id-works-1803813400 <comment><USER2> Since its biometric, ill assume that it too like your fingerprint, is coersable.

Still the only safe way is a PIN.</comment>


Software Freedom Law Center effectively blesses Microsoft's Android/Linux deals - <AUTHOR> http://www.fosspatents.com/2013/05/software-freedom-law-center-effectively.html

<comment><USER2> The headline is a little misleading. What SFLC is saying is that patent licensing agreements are orthogonal to enumerated license terms of the GPL.

The construction of a patent claim has little to do with the license terms of the source.

Since no Android device makers will bother to challenge MS in court, we'll never really know what cards if any MS is holding. Must be nice to make millions of dollars for making a phone call.</comment>


The US Has Its First 'Community Spread' Coronavirus Case - <AUTHOR> https://www.wired.com/story/community-spread-coronavirus/ <comment><USER2> > That gap between admission and diagnosis raises concerns about health care > workers being unknowingly exposed at Davis—a potential problem anywhere. ...

Then later:

> The UC Davis memo explains the delay in testing by noting that neither > Sacramento County nor the city of Davis' public health agency performs the > test. The hospital had to request the CDC do it. "Since the patient did not > fit the existing diagnostic criteria for Covid-19, a test was not > immediately administered," the memo says. ...

Finally:

> As The Washington Post reported Tuesday, while South Korea has performed > more than 35,000 tests, the US has done fewer than 500, and only the CDC and > a handful of local public health agencies even have the diagnostic system.

The press corps did a fantastically poor job at the President's press conference today. Only one question about testing, and a softball at that.

Now there's no telling how many are infected, or where they've dispersed to.

Then there's this:

> ... the California Department of Public Health announced that the patient > was a resident of Solano County—which, as other reports have pointed out, is > the location of one of the Air Force bases being used for quarantines of > people who've returned to the US from countries with the disease.</comment>


Developer notes on building Halo for Atari 2600  - <AUTHOR> http://www.atariage.com/forums/topic/166916-halo-for-the-2600-released-at-cge-download-the-game-here/page__p__2062848#entry2062848

<comment><AUTHOR> And a link to the flashed version of the game <http://members.shaw.ca/jeffv/halo2600.html></comment>


MacBook Pro: If you were Steve Job and wanted to design new MBP then what ...  - <AUTHOR>

bells and whistle will you add:
Wimax
Blu-ray
built-in Final Cut pro
Extra-ordinarily thin
Longer battery life
and of course available under $1500? <comment><USER2> You forgot to mention the antigravity generator so that it has negative net weight. Levitation also allows better airflow.

</comment><comment><USER3> Glossy displays are already available on MacBook Pros. I'd just love one with a 3ghz+ chip and I'll take one for sub $1500 ;)

</comment><comment><USER4> that's a bit of stretch on final cut pro.

I would say a new form factor.

</comment><comment><USER5> A spoiler</comment>


Show HN: Dendrite – collaboratively read and write your own adventures - <AUTHOR> http://dendritestories.co.nz

<comment><AUTHOR> Hi, developer here.

Dendrite is a collection of gamebook adventures (like Choose Your Own Adventure) which are written, extended, and rewritten again by the readers.

If you like the story you're reading but it isn't finished yet, continue it yourself by writing the next page. If you don't like the story you're reading but have a great idea for fixing it, rewrite the page. Any reader can extend or rewrite any other readers' pages.

Each page can be rewritten any number of times and each alternative version is weighted by the size of the story tree that it branches out into and by how many users love those pages. Better stories will have more pages and more loving readers, so the better alternative versions will be more likely to be served to the readers.

I've been working on this project for a while now. It's my first published project and I'm pretty proud of it, but in good developer fashion I'm extremely aware of how fragile it is. If you break anything, please let me know. All feedback and tips are much appreciated. Enjoy adventuring!</comment>


Mastering the Art of Bosslessness - <AUTHOR> http://www.fastcompany.com/3001574/mastering-art-bosslessness

<comment><USER2> If you're interested in this idea, I liked how this article addresses how it could be applied in a tech company:

[http://michaelochurch.wordpress.com/2012/09/03/tech- companie...](http://michaelochurch.wordpress.com/2012/09/03/tech-companies- open-allocation-is-your-only-real-option)

</comment><comment><AUTHOR> BTW, Valve has similar bossless culture. [http://www.quora.com/Valve- Corporation/Does-Valves-employee-...](http://www.quora.com/Valve- Corporation/Does-Valves-employee-handbook-accurately-reflect-their-culture)

So far it looks to me like a living example to learn from.

</comment><comment><AUTHOR> Outstanding CEO, cool culture and organisational principles.</comment>


The Illusions of Psychiatry - <AUTHOR> http://www.nybooks.com/articles/archives/2011/jul/14/illusions-of-psychiatry/

<comment><USER2> Depressive realism is the proposition that people with depression actually have a more accurate perception of reality, specifically that they are less affected by positive illusions of illusory superiority, the illusion of control and optimism bias. The concept refers to people with borderline or moderate depression, suggesting that while non-depressed people see things in an overly positive light and severely depressed people see things in overly negative light, the mildly discontented grey area in between in fact reflects the most accurate perception of reality: <http://en.wikipedia.org/wiki/Depressive_realism>

<comment><USER3> I've read some findings that saw depressive patients perform better on risk assessment tests than people who were not depressed. It doesn't surprise me. Because having an accurate perception of reality is problematic. One actually needs an overly positive view of live to a) enjoy it and to b) get things done.

You can get consolation from your past only because you forget the pain more quickly than the beauty. You can look forward to the future only because you project the exciting moments rather than the boring ones (which will surely be more numerous). And the most relevant in the context of Hacker News: when you get enthousiastic about a project, you tend to grossly underestimate the time and effort it will cost to complete it. Had you been realistic at the outset, you might not have started at all.

</comment></comment><comment><USER4> The article is correct in stating that extended psychotherapy may be as helpful as psychopharmacology in treating many conditions but the problem remains is that it is not well reimbursed. That is something the government needs to take a lead on with Medicare and Medicaid payments.

Some of the most egregious examples actually take place with the elderly, many of whom may be diagnosed with a form of dementia and are then placed on "anti- dementia" meds, which are almost useless in their efficacy but neverthless prescribed because there is "no other option" The other option, really, is to not institutionalize them, offer therapy sessions in a supportive home environment where assistance is available and with easy access to family members. Right now though, the government won't pay for much of this.

<comment><USER5> The other option of course, is to shrink medicare (and payroll tax) and let people spend money the way they want to.

<comment><USER6> That would require all individuals to have the disposable income to cover all their own medical costs. The further down the income ladder you go, the less an option it appears.

</comment></comment></comment><comment><USER7> _One would be hard pressed to find a two-year-old who is not sometimes irritable, a boy in fifth grade who is not sometimes inattentive, or a girl in middle school who is not anxious._

Just like one would be hard pressed to find an adult who is not sometimes full of themselves, sad, or paranoid. Mental illness is usually an exaggeration of some normal behavior. There's a world of difference (albeit a sometimes difficult to see world) between being inattentive at times and not being able to function normally due to not being able to pay attention.

I don't mean to say that everything is fine with psychiatry. I just think this fundamental distrust of it is not good. I personally wouldn't be where I am today without it.

<comment><USER8> Ah, but what does it mean to ´function normally´? And why is that a worthwhile goal, especially if 50% of population needs to be pumped full of drugs to achieve it. If a guard in a torture camp experiences anxiety and despair, is that mental illness or an appropriate response to a perverse situation? You can ask the same question, albeit on a much lesser scale, about energetic ten year olds forced to sit through boring classes and learn by rote.

There is a lot of bs in psychiatry. That doesn´t mean there isn´t some wisdom there or the potential to help some people, but it is built on top of an extremely flimsy pseudo-scientific foundation, and it´s questionable whether it helps as many people as it hurts. If you find a good psychiatrist and it works for you, that´s great. I still think a fundamental skepticism is warranted, especially given the potential for serious physical and mental damage caused by these (very powerful) psychoactive drugs.

<comment><USER9> I think to function normally is to not be disturbed by things which bear no reasonable relation to external reality - that to me is the fundamental indication that there's _something_ wrong, which varies from serious mental illness (e.g. psychotic delusions) to low-level depression.

It's dangerous to dismiss the whole thing as b.s., it's like throwing the baby out with the bathwater - we don't want to validate the idea that 'we can't define normal, so therefore there is no basis on which to call somebody mentally ill'.

I think a lot of the reason these things are 'soft' is that we don't have a strong enough understanding of the brain, and certainly no strong diagnostic tools to be able to analysis what's going on in someone's mind in order to determine whether something is 'wrong' for a given definition of wrong. Until then we have to hack away around the problem.

I do agree, however, that skepticism is vital in this area as in every other.

</comment></comment></comment><comment><USER10> If anyone wants to know more about why the subjectiveness of the DSM is problematic, check out Crazy Like Us by Ethan Watters, and then also this Wired article:

<http://www.wired.com/magazine/2010/12/ff_dsmv/>

I realize this is only a book review and not an attempt to fully explain the issues, but even still the author of this piece doesn't do the best job at actually explaining the various issues. (Albeit it's still a good read.)

</comment><comment><AUTHOR> Part 2 of [http://www.nybooks.com/articles/archives/2011/jun/23/epidemi...](http://www.nybooks.com/articles/archives/2011/jun/23/epidemic- mental-illness-why/)

Previously discussed here: <http://news.ycombinator.com/item?id=2639359>

</comment><comment><USER11> A complete disregard for using psychedelics to treat psychological disorders is the reason I can't take modern psychiatry seriously. We have compounds which are capable of producing deep, lasting changes yet the field is so political in nature that we simply brush them off to the side. Just as there were serious consequences stemming from the influence of the church on society a couple of hundred years ago, so it is with business today.

<comment><USER9> You have to be careful with psychedelics - they can potentially cause very serious problems as well as (allegedly) improve things.

A close family relation and a number of his friends took relatively small amounts of LSD and as a result experienced very serious mental health issues, anecdotal but I think not unrelated, also I believe this is backed by studies.

<comment><USER11> Psychedelics are tools, albeit very sharp ones. I could use my knife to kill myself or chop some vegetables for a healthy salad. I think that the risks are greatly diminished when psych's are used the in right setting, for the right purpose. Failing those safeguards, I imagine that the psychiatrist would have some anti-psychotics and benzodiazapines to pull the patient back out. Also, I imagine that in a therapeutic setting the patient would be evaluated to determine their risk of developing schizophrenia or other mental illnesses, and cut off if said risk is too high.

</comment></comment></comment><comment><USER12> More quotes from psychiatrists on the subjectiveness and ineffectiveness of the DSM:

[http://www.cchr.org/sites/default/files/education/appendix/0...](http://www.cchr.org/sites/default/files/education/appendix/05-fact- sheet-1.pdf)

[http://www.cchr.org/quick-facts/disorders-voted-into- existen...](http://www.cchr.org/quick-facts/disorders-voted-into- existence.html)</comment>


How the PVS-Studio Team Improved Unreal Engine's Code - <AUTHOR> https://www.unrealengine.com/blog/how-pvs-studio-team-improved-unreal-engines-code?hn <comment><USER2> I encouraged game developers in the past to use static analysis tools to help iron out more bugs. It's great to see Unreal Engine taking that step. A big name like this will hopefully inspire others to take the same step.

</comment><comment><USER3> Why is "(GEngine == nullptr || !GEngine->UseSound())" safer than "(GEngine || !GEngine->UseSound())"? Is this some kind of precedence rule, where the former short-circuits but the latter doesn't?

<comment><USER4> The two conditions are not equialent - the first is true if GEngine is null or does not use sound, and the second is true if GEngine is _not_ null and is undefined otherwise due to dereferencing a null pointer. I assume the original author intended to write "(!GEngine || !GEngine->UseSound())".

</comment></comment><comment><USER5> How can the Memcmp/Memcpy bug get unnoticed??

<comment><USER6> In code bases as big as Unreal Engine 4, you can easily remove as much as 10k lines of code and nobody will notice. It's not uncommon to have that much (and more!) dead code even. A single missing memcpy doesn't mean much, unless it's part of a hot code path.

All these rarely visited code path bugs matter in terms of security of course.</comment></comment>


Contra – Asynchronous flow control with a functional taste to it - <AUTHOR> https://github.com/bevacqua/contra?1 <comment><USER2> I think this library looks great. It seems to do just enough, and browser compatibility with a small filesize is wonderful.

I almost can't believe that all of the other (current) comments are complaining about the use of the λ character. Unicode is hardly a new concept, and it is certainly not "hostile" (hyperbole much?).

In fact, as modern languages like Julia become popular, I think we will see increased use of unicode characters in coding. Julia is very unicode friendly, which aids scientists and mathematicians when translating formulas to code. For example, it supports the "element of" operator ('∈') for testing if an item is in a set. These unicode characters actually _improve_ readability in many contexts, while being less convenient to type if you're only accustomed to ASCII.

<comment><USER3> I guess not super hostile, but I just don't know how to type it in emacs or vim except by memorising the code point :/

e.g. in Vim: Ctrl-V, U, 3bb <ret>

Which is OK for this one library... but if I had delta and epsilon libraries too I could see it getting to be a pain.

In terms of typing efficiency, 6 keystrokes, it's about the same as just typing "contra" except harder to remember.

<comment><USER4> For the quickest workaround if you need only a lambda char, bind something like this to some keys:

        (defun my-insert-lambda ()
            (interactive)
            (ucs-insert 955))

But there are many different options available in Emacs for inserting exotic characters, as listed here, for example: [http://stackoverflow.com/questions/10192341/how-to-enter- gre...](http://stackoverflow.com/questions/10192341/how-to-enter-greek- characters-in-emacs) \- I didn't have any need for them, as I only need lambda character when I'm programming in Racket (which understands this character natively, which is very nice!), but both abbrevs and input method ways of doing this look legit.

</comment></comment></comment><comment><USER5> Flow control != control flow

[https://en.wikipedia.org/wiki/Flow_control_(data)](https://en.wikipedia.org/wiki/Flow_control_\(data\)) [https://en.wikipedia.org/wiki/Control_flow](https://en.wikipedia.org/wiki/Control_flow)

I expected a "please stop sending until I am ready to receive again" mechanism.

<comment><AUTHOR> There's a queue for that.

</comment></comment><comment><USER6> This looks pretty cool, but it seems to me it has hardly more than a sprinkling of "functional taste". Promises are much more functional in the modern sense of preserving composability _outside_ the abstraction by creating values that represent asynchronous computations, which can be composed flexibly with a _then_ method.

</comment><comment><USER7> Contra? Shouldn't it be Contrl? (Original name is Contrλ)

</comment><comment><USER8> Using extended characters like λ for your library is pretty hostile to users.

<comment><AUTHOR> I don't, it's just the name I use on the readme. The library is published as the `contra` global.

<comment><USER9> And in all of the examples on the github page. Why not just get rid of the λ variable and use `contra` directly? I guarantee this will confuse/frustrate people otherwise.

<comment><USER10> Yeah it will confuse some but it'll probably pique some people's interest too. People like memorable little oddities sometimes.

<comment><USER9> Sure, but not in their code. All this does is blind people to the genuine values this project might have.

</comment></comment></comment></comment></comment><comment><USER11> > The only reason contra isn't published as λ directly is to make it easier > for you to type.

I don't understand this. Do you mean "so you don't need to use the λ character"?

<comment><AUTHOR> Yeah

</comment></comment><comment><USER12> Nice! Interested in adding the contra approach to [https://github.com/jlipps/async-showcase](https://github.com/jlipps/async- showcase)?

</comment><comment><USER13> I wrote another async replacement for browsers, 4.1k minified. [https://github.com/aynik/be](https://github.com/aynik/be)

</comment><comment><USER14> I wrote library a long time ago to solve pretty much the same problem.

[https://github.com/kolodny/wttt](https://github.com/kolodny/wttt)

</comment><comment><USER15> In order for us to use this in production we ordered all our programmers keyboards with lambda keys. jk but for real this is a really useful lib

</comment><comment><USER16> Looks like async library but without 90% of code

<comment><USER17> 90.88%, actually

[https://github.com/bevacqua/contra?1#comparison-with- async](https://github.com/bevacqua/contra?1#comparison-with-async)

</comment></comment><comment><USER18> Promises are a superior abstraction, easier to reason about, provides consistent error handling. Sadly (in my opinion), this is an `async`-like library.

<comment><USER17> What? Why? I disagree on all of those points. Promises are inconsistent[0], slow[1], and I find them a hassle compared to async. The Node.js core and community convention is to use callbacks and callback-embracing tooling for a good reason.

[0] [http://lostechies.com/derickbailey/2013/09/20/consistency- pr...](http://lostechies.com/derickbailey/2013/09/20/consistency-problems- with-apis-in-javascript-promise-libraries/)

[1] [http://thanpol.as/javascript/promises-a-performance-hits- you...](http://thanpol.as/javascript/promises-a-performance-hits-you-should- be-aware-of/#conclusions)

<comment><USER19> Performance: I cannot honestly remember a single case in my entire Node.js career where promise execution time was a performance bottleneck.

Inconsistency: If you're consistent in your promise library usage, then promises will always behave the same way. Wrap libraries as necessary.

Promises are incredibly easy to reason about - the code reads very synchronously. Until we have native concurrency primitives available at the language level, I'll settle for ".then". It's pretty much how I'd read it in my head anyways.

If promises are a hassle, you're probably not using them correctly.

</comment></comment></comment><comment><USER20> I don't get why the special character had to be used.

<comment><USER17> It doesn't. You can use whatever identifier you'd like, just as with every node module.

<comment><USER20> No, I mean within the readme. It only served to confuse things.</comment></comment></comment>


Ask HN: Why Won't Microsoft Port 'Project' to OS X? - <AUTHOR>

<comment><AUTHOR> This is the greatest mystery to me. The only thing I can think of is that the share of business people on strictly OS X systems are too few to make porting project worthwhile.

Right now, I have to use Parallels to Boot a Windows VM to run Project. OS X does have Project alternatives but I find them either too expensive and not as complete as Project or somewhat backwards to use their file types to share with Windows users using Project. Maybe I'm wrong, but right now I haven't found anything exactly like or better than Project.</comment>


My new book, "Linux is Badass", comes out tomorrow - <AUTHOR> http://lunduke.com/2013/10/29/linux-is-badass-the-book-oct-31st/ <comment><USER2> I am interested in your book, but it is unlikely that I'll remember to come back tomorrow. I would recommend at least taking email addresses to send a reminder.

Best of luck with this.

</comment><comment><AUTHOR> I know, I know. This is pretty self-promote-y. But I've got a sneaking feeling that this will be of interest.

<comment><USER3> So Linux doesn't suck anymore?

<comment><AUTHOR> Linux only sucks once a year. :)

</comment></comment></comment><comment> vezzy-fnord _"100% RMS approved!"_

Nice try, kernel adulator. It's GNU/Linux, or GNU+Linux.

<comment><USER4> I just added 'kernel adulator' to the list of terms I'll use. My search engine (DDG) returned zero mentions of the term, so you may have coined a new one (and a good one at that.) I'm not a big fan of RMS, but I do agree that Linux distributions should be referred to as 'GNU/Linux'. OS X is more than XNU too.

</comment></comment><comment><USER5> This is just advertising and blogspam. Flagged.

</comment><comment><USER4> _"We all know that Linux is badass. Now there's a book to prove it. Sure to convert even the most die-hard Windows or Mac users"_

I think you meant 'OS X users' instead of 'Mac users'. Macs are computers – they can run a number of OSes, including GNU/Linux distributions. Mac users can be GNU/Linux users.

I hope this error is not indicative of the rest of the content.

</comment><comment><USER6> I'll probably buy the book, seeing as it's cheap as shit. But, I just want to say, your BBS is one of the most awesome things I've found all year. (wishing I wasn't so young)</comment>


Netflix talks about their use of AWS - <AUTHOR>

Adrian Cockroft talks at the Silicon Valley Cloud Computing Group about running massive infrastructure that spans AWS and Netflix's own datacenter: http://blip.tv/file/4252897 <comment><USER2> Clickable [Video]: <http://blip.tv/file/4252897>

On a related note, why is this not a normal submission?</comment>


WebRTC 1.0: Real-Time Communication Between Browsers Draft Published - <AUTHOR> http://www.w3.org/blog/news/archives/4365

<comment><USER2> To me, the biggest question left is if/when the default mobile browsers will support this.

I feel like Apple and Google both have too much desire to push people towards facetime and hangouts to ever have default support for webRTC that works reliably.

<comment><USER3> When it comes to WebRTC, Chrome on Android works just like Chrome on Windows/Linux/Mac. Safari is the browser I'm worried about. Even IE implements a couple of WebRTC APIs, though they're not very useful by themselves. Safari has absolutely no support for any WebRTC stuff.[1]

1\. [http://iswebrtcreadyyet.com/](http://iswebrtcreadyyet.com/)

<comment><AUTHOR> It is true that both Firefox and chrome browser on the android support this. Further there is openwebrtc, which is gstreamer based and compiles for iOS and Android.

But... the algorithms/configurations are not entirely sufficient for the mobile use-case even though they support the WebRTC API. Mainly because

1\. compute resources on laptop differs from tablets/smartphones: i.e., being able to efficiently encode and decode video (720p+) in real-time.

2\. variability in network capacity, and latency on mobile devices mainly due to 3G/LTE, but also related to quirky WLAN chipsets. (mainly a congestion control problem)

This all boils down to having a different configuration to the media engine in the browser. I think there is still a lot of components needed (FEC, congestion control, etc.) would make WebRTC awesome on the mobile.

*disclaimer: callstats.io does webrtc analytics, and insofar we consistently observe variability in media quality irrespective of WLAN or 3G.

</comment></comment></comment><comment><USER4> About time!</comment>


How Unique Is A Unique Visitor? - <AUTHOR> http://www.avc.com/a_vc/2010/02/how-unique-is-a-unique-visitor.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+AVc+%28A+VC%29&utm_content=Google+Reader <comment><USER2> _And what they found was that a "reliable cookie" overstates user counts 2 to 4 times. That's right, if your analytics software uses cookies, it is possible that your unique visitor counts are 2 to 4 times too high._

I wonder what their methods for determining this is. Do they mean that an average user clears their cookies 2 to 4 times within a typical reporting period (unlikely)? Do they mean that an average user uses 2 to 4 different browsers to access the same site (unlikely)? Or do they mean that the average user accesses the same websites from 2 to 4 different computers (more likely)?

These kind of claims don't mean anything if you don't know how to interpret it. People know how to interpret unique visitors: it essentially means "unique browser sessions", and most people that are serious about analytics are aware of this. But don't start dividing the unique visitors by 2 to 4 yet, if you don't know what the resulting number exactly represents.

(disclaimer: I'm a service provider in online ads and biased too)

<comment><USER3> Correct me as needed, but I took OP to regard "unique visitor" as meaning "unique visiting person" - and to be citing himself as overcounted when he visited a site variously via Safari, FF, Chrome, and iPhone - which certainly happens to me many days.

</comment></comment><comment><USER4> Tracking uniques with Flash cookies rather than browser cookies (when possible) should compensate for the one-user-many-browsers problem. I know there are ways for individual users to clear Flash cookies, but I don't believe this is being done on a scale wide enough to be statistically significant.

<comment><USER5> That sounds a lot like trying to solve a small problem by creating an even larger problem.

Translation: whatever the problem, it's unlikely the solution is using more Flash on your website.

</comment></comment><comment><USER6> Half the "unique hits" on my old Blogger are me.

</comment><comment><USER7> It sounds like some javascript was used to hash some things like installed plugins that vary from user to user and browser install to browser install in order to create a more unique and reliable identifier than cookies. I'm not sure how that can capture use of multiple browsers though.

<comment><USER8> If they are on the same machine you can just use Flash cookies since there is a single Flash cookie jar for the entire machine (across browsers).</comment></comment>


Show HN: Malcheck, a tool to test memory allocation failure handling - <AUTHOR> https://github.com/andrewrk/malcheck

<comment><AUTHOR> I posted the idea for this yesterday morning[1] and got no responses but I decided to make a proof of concept anyway :-). Then I made the mistake of doing Show HN but not using a link[2] which /user?id=dang helpfully pointed out was penalized. So, what the hell, here's a repost.

One problem that has presented itself is that "memory leak" is kind of a subjective concept. It's really common to allocate memory and never free it, because the memory need not be freed until the application shuts down. valgrind has all kinds of voodoo to differentiate between memory intentionally never freed and accidental memory leaks. So you end up in common situations where the number of allocations is thousands more than the number of deallocations, and there's still no leak.

So this can still help check the allocation failure handling code, but I don't think it's going to be able to find memory leaks since there would be too many false positives.

[1]: [https://news.ycombinator.com/item?id=9977032](https://news.ycombinator.com/item?id=9977032) [2]: [https://news.ycombinator.com/item?id=9980477](https://news.ycombinator.com/item?id=9980477)</comment>