Guide to MongoDB for startups - <AUTHOR> http://www.optinidus.com/blogs/guide-to-mongodb-for-startups/ <comment><USER4> The title "Guide to MongoDB for Startups" is hand-wavy, and is more like a high level overview of MongoDB architecture. If you are looking for a "Guide to MongoDB for Startups", it would probably be part of a much larger series of technology choices for startups. Since I found the other lacking, I'll give you my perception of a Guide to MongoDB for Startups:

* Do you have a customer yet? If not, technology choices do not matter, go build your product as fast as possible and get a customer.

* Is your system starting to have slow performance during max usage? If so, every system will have a few easy optimizations, find those using something like NewRelic. Aside from those, technology choices do not matter, throw money at any scaling problem (at this point, it typically isn't that much money). This will optimize your time for sales and marketing to get more customers.

* Is your system starting to buckle under the weight of customers? If so, go hire someone who can scale everything you learned from your customers, and not someone who bends to the latest trends on HN.

Here is an article on my philosophy and experience with scaling businesses and architectures: [http://blog.mongohq.com/changing-the-growth- formula/](http://blog.mongohq.com/changing-the-growth-formula/)

</comment><comment><USER5> I find it somewhat depressing that the first comments on any post about MongoDB generally seem to be short, disparaging and dismissive without offering much if any substance.

We use MongoDB in production, processing millions of new records every month and it works great. Our data has differing and evolving schemas and can be used as JavaScript objects or python dictionaries with little effort. It works and performs well for us and our use case.

I'd be delighted to find out what these nay-sayers are doing that MongoDB must fail so incredibly at for them to have such strong negative opinions.

I'm not speaking only to the existing comments on this post but the general theme of past MongoDB submissions.

<comment><USER6> There was a spate of high profile "why we moved from MongoDB to $other_database" articles a year or so ago of startups getting burned when they realised that the all-signing all-dancing cure-all database they (thought they) had been sold, in fact wasn't.

The issues encountered ranged from MongoDB failing to scale out as easily as promised, to significant loss of data. There was also some backlash because MongoDB didn't (and perhaps still doesn't) persist data to disk when it acknowledged it as received[0].

A general perception grew, rightly or not, than MongoDB was being marketed by 10Gen[1] over and above its capabilities. Then the actual message of "MongoDB is not a drop-in replacement for traditional RDBMSs like PostgreSQL and MySQL, and is not the ideal solution to every problem" has been filtered down to "MongoDB is a terrible product with no use cases whatsoever." Such is the effect of the HN echo chamber.

Much like PHP, MongoDB is now simply a product that you cannot say anything good about on HN, even if you are in fact finding it an effective tool for your use case in spite of its shortcomings.

[0] Cynically, because they were trying to win benchmarks. Less cynically, because the use case was semi-ephemeral data where possibly losing some data is acceptable.

[1] Now also called MongoDB

<comment><USER7> Do you think it is MongoDB problem or all NoSQL dbs has the some problem?

<comment><USER8> Other NoSQL solutions were not marketed as a replacement for relational databases. MongoDB might be better now,but you cant take managers for idiots an expect them to buy into your product again. Right now MongoDB only lives because of javascript and nodejs ,since nodejs sucks big time with anything that is not MongoDB,library and driver wise.

<comment><USER9> Absolute rubbish. The node Postgres driver is excellent and has performed flawlessly for us.

</comment></comment></comment></comment></comment><comment><USER10> Startups should use a relational database unless their requirements (current and future) exactly fit a nosql model - which is difficult to predict. You can migrate later if scalability becomes an issue. Going nosql first (considering that most startups lack enough design experience) will make things messy and would make it difficult to scale when needed.

</comment><comment><USER11> Here's my one-word guide:

Don't.

<comment><USER12> I came to here say this as well.

<comment><USER13> You came here to write a one-word comment about a database too, found it already written, so instead decided to write "me too"?

Or did you instead have a detailed and carefully plotted comment about the problems with Mongodb, but then you read "nasalgoat's" comment and found his concision so bold and bracing that you were intimidated from contributing your comment?

If so, I urge you to reconsider.

</comment></comment></comment><comment><USER14> MMh. I would have expected a one-liner: "Use something else" ? :)

</comment><comment><USER15> Note to the designer of this page: white background with light gray foreground text is a bad UI decision. Users need more contrast, as this page looks faded.

</comment><comment><USER16> _With the increasing data the search engines, e-commerce stores need to provide us with accurate results. Which means processing huge amount of data. Which SQL databases were never designed for._

What? There is no limit how much data you can stuff into a relational database and it mostly works really good. There are definitely some scenarios where relational databases are not optimal, for example aggregating huge datasets, but there are often solutions like materialized views or aggregates. The statement that RDBMSs are not designed to handle huge datasets is plain wrong.

 _With these growing needs the it was getting even more difficult to define a fixed structure to the data and the need to have a solution which handles unstructured data grew even more._

I don't understand how once inability to come up with a good data model is related. If you have no data model you will have a hard time working with your data anyway. You can stuff unstructured data into a string column and modern RDBMSs also support semistructured data like XML and JSON including operations to manipulate such data. And even with XML and JSON you still have a data model, just not a relational one.

I agree that the relational model is somewhat stiff and it is - <USER2> between sometimes and often - a pain to design, implement or evolve a schema. But a fair amount of the complexity usually comes from the domain you are modeling and does not go away when you switch to a different data model - <USER3> database may not complain when you stuff documents with seven different schemas into it, but now the burden is on the code to deal with documents with seven different formats. Data modeling and model evolution is a difficult problem and does not go away by switching technologies. The major difference is the point in time when you recognize that you have a problem.

 _So most of the NoSql databases traded consistency for Availability and Partition Tolerance which was a fundamental shift from the relational world where in you had to design your schema perfectly so that there were no inconsistencies in the data ( 1NF, 2NF, 3NF, BCNF)._

Consistency in the sense of the CAP theorem and in the sense of database schema normalization are almost completely unrelated. This gives me the impression that the author does not really know what he is talking about.

 _One of the biggest advantages claimed by NoSql databases is Horizontal scalability , which is the ability to handle more load by adding in more machines, since the computing power these days has gone cheap compared to the effort required in to fine tune the app and add more computation power and memory to an existing machine._

RDBMSs support partitioning across server as well. It is probably harder to set up and does not scale as well because the provided guarantees are stronger, but it is possible.

 _MongoDB uses reader-writer locking mechanism , it gives concurrent access to reads but exclusive rights for write operations which means it can handle concurrent read operations but if there is aright operation it will block the reads until it gets completed ._

So do many RDBMSs. Or they use MVCC and allow even more parallelism.

 _Prior to mongodb version 2.2 mongodb had an instance level lock which means that whenever there was a write operation it used to lock the entire mongodb instance and even if there was a read queued for a different database it will have to wait as the write operation blocked the entire mongod instance.

This was changed in 2.2 where in the write operation locked the whole database instead of the complete instance. So the solution which was left to scale the write operations was to add in more shards and route the next write query to a separate mongodb shard instance._

This is still extremely inferior to modern RDBMSs which usually support row level looking.

 _For applications this is by far the most important point to take into consideration when choosing which database to use, as for write intensive application this might come in their way to scale._

RDBMSs allow you to opt out of consistency - if you want to read uncommited data, you are usually free to do so. I don't see why a RDBMSs should intrinsically allow less parallelism but admittedly dropping consistency guarantees is quite contrary to the reasons you usually choose a RDBMSs to begin with.

UPDATE: I probably misinterpreter the last part about locking and scalability - after reading it again, it sounds like the author actually warns that using MongoDB may cause scalability issues. I leave my comments as they are although they sound a bit strange in that light.

TO-THE-DOWN-VOTERS: I would love to hear where I am wrong, my opinion is neither set in stone nor absolute truth.

<comment><USER17> _This is still extremely inferior to modern RDBMSs which usually support row level looking._

I suppose row-level locking is a necessity when you want to be able to scale vertically. By comparison, I understand that MongoDB doesn't even try to support vertical scaling so it makes sense to not bother with complex locking systems.

Personally, I'd prefer to have to option of scaling without being forced to increase the number of moving parts in my single most important system (the database)...but the MongoDB docs make the fair point that there's a ceiling to vertical scaling. It's probably higher than most people think though.

As an aside, I discovered recently that Informix supports byte-level locks for 'smart large objects' (namely CLOBs and BLOBs). Makes me wonder whether field level locking will appear some day.

<comment><USER18> The ceiling to vertical scaling is pretty damn high. Last I checked, Stack Overflow still ran on a master-slave pair of SQL Server boxes with 64 gigs of RAM each. That's not exactly big iron these days.

Locking has a degree of complexity to it, but implementing page locking (for example) is not _that_ hard. The fact that the Mongo guys haven't is probably symptomatic of the fact that they're still relying on the OS to cache data, rather than implementing their own page manager like most other DBMSs. That said, given the short duration of Mongo locks, lock granularity isn't as big a deal with Mongo as some make it out to be.

</comment></comment></comment><comment><USER19> I guess this is a good introduction to some of the internals, However its very very high level. If I were to give one piece of advice it would be to plan out your primary key's according to your data access pattern. This is especially true if you know you will need to be sharding across multiple nodes.

</comment><comment><USER20> Any mention of mongodb these days should really be mentioning tokumx. It's got real transactions, compression, hot backup, and optimized (sequential) read/writes.

</comment><comment><USER21> MongoDB offers the greatest benefit to those who have an evolving concept of their schema, and that tends to be startups, though I have worked in large firms that entirely re-invented their schemas. I worry that I would seem tedious if I listed the places that I have worked, and yet, on Hacker News, when I speak in abstract terms, I tend to get downvoted, so I will name a few specifics.

I worked at Wine Spectator for a year (2010-2011), [http://www.winespectator.com/](http://www.winespectator.com/) . They had built their first web site circa 2000 using Oracle, Sun Solaris, and Vignette with Java templates. Circa 2009 they decided to scrap the old, expensive system and move to PHP/MySql and the Symfony framework. They could not decide what their new schema should be, so, in the name of keeping things flexible, they decided that all data would be in a single table. This table had 240 fields, most of them with generic names such as "modifier_01" and "modifier_02". This was an organization that was looking for the flexibility offered by MongoDB, but they tried to cram that flexibility into a relational database, and they did so by ignoring all the relational features offered by MySql. This "one size fits all" database table did not work for the last assignment I was given: import all the old FileMaker Pro databases to a system running Mysql/PHP/Symfony. I build an entirely different project, with its own database and schema. Lord knows who is maintaining it now.

Then I worked a year (2011-2012) at Shermans Travel, [http://www.shermanstravel.com/](http://www.shermanstravel.com/) , which also tore apart its database. When I first arrived they were trying to save a system built with MySql and PHP and later forced to conform to the CakePHP framework. The database had over 300 tables, many of which were no longer in use. Of the tables that were in use, many had fields that were no longer in use. The code, and the database, were a sprawling mess, that had evolved chaotically. (I am emphasizing this chaos because this criticism is often made of MongoDB: without a schema then how do you keep your data organized? Well, most of the places I have worked have had relational databases where the data was completely disorganized). After a few months, the CTO and the tech team decided on a complete re-write of the code. The tech team was allowed to vote for either Java or Python or Ruby (no one wanted to use PHP). We voted for Ruby. We rebuilt the site as 6 apps, using MySql for some of the apps and MongoDB for some. My last big project there was a rescue effort for a broken group of 4 database tables in MySql. There was a "users_history" table that was suppose to track whether a user had subscribed or unsubscribed to various newsletters we offered, but there had been a bug, apparently for years, such that many of the "unsubscribe" attempts were not recorded. There were 3 other tables with somewhat redundant data, and I wrote a script that scanned those other 3 tables and attempted to funnel the correct data to the 4th table.

I have many more stories like this. I could write a whole book about places where Oracle, MySql or PostGre was in use, but the data was badly organized. Unused tables and unused fields are extremely common.

Why do I emphasize the chaos I have encountered? Because the charge of badly organized data gets thrown at MongoDB a lot. If you would like to read a scathing attack against MongoDB, read this:

[http://www.sarahmei.com/blog/2013/11/11/why-you-should- never...](http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use- mongodb/)

But to me, this line of argument compares the platonic ideal of relational data against the actual use of MongoDB. Maybe if Edgar F. Codd designed your schema to the 7th Normal Form then your schema really is well organized, but I have not seen anything like this in real life.

What I have seen, in real life, convinces me that every organization has an informal schema that is constantly evolving, and which can not be maintained with anything like regularity. Most of the organizations I've been hired at default to rebuilding everything every 5 or 6 years, because by that point the old system has grown chaotic. Sarah Mei's description of the dangers of MongoDB matches my own experience with relational databases: "we figured out that we had accidentally chosen a cache for our database."

What I like about MongoDB is it openly, boldly declares that the chaos I've seen is typical, and it facilitates the evolution of the schema which is going to happen no matter what you do or say. Things evolve, often chaotically. A programmer has a great idea and works on it in 2007, another programmer takes over in 2008, the project starts as raw PHP, later is imported into Symfony, then is re-written in Ruby, then it is broken up into several small apps. Someone quits. The CTO is fired. Someone new starts working and, for the sake of simplicity, prefers doing as much as possible as a background task, using cron scripts. A year later someone joins and is disgusted with the profusion of cron scripts, they want everything organized around a message queue. A very good sysadmin joins the team at a time when most of the programmers are weak, the sysadmin re-writes many of the background scripts, but he prefers Perl for everything and he implements some data caching strategies that no one understands.

You may think that I am exaggerating the level of chaos I have seen. I have not worked for Facebook or Google or Apple and if you tell me that in those companies everything is well run and well organized, then I will believe you, as I have no reason to doubt you. But I have worked at a lot of older media companies in New York City, and what I have seen is constant churn, churn at every level, churn in the team, churn in the technologies, and churn in the database.

I know I will be misunderstood, so let me try to clarify this:

I am not saying that chaos is good.

I am not saying that MongoDB is good because it encourages chaos.

I am saying that chaos is a symptom of the fact that most businesses do not know what their schema should be, and even if they did know what their schema should be, their needs would be different a year from now. The real schema needs of the organization (that is, what sets of data should be acquired and what the relations should be between those sets) are undergoing constant evolution, and this evolution is necessary, healthy, and unstoppable.

What is the strength of a relational system? Consider Wikipedia's explanation of Codd's Theorem:

[http://en.wikipedia.org/wiki/Edgar_F._Codd](http://en.wikipedia.org/wiki/Edgar_F._Codd)

"The domain independent relational calculus queries are precisely those relational calculus queries that are invariant under choosing domains of values beyond those appearing in the database itself. That is, queries that may return different results for different domains are excluded. An example of such a forbidden query is the query "select all tuples other than those occurring in relation R", where R is a relation in the database. Assuming different domains, i.e., sets of atomic data items from which tuples can be constructed, this query returns different results and thus is clearly not domain independent."

Clearly, this assumes that the relations among the data are known. The organizations that I work with have no real idea about what relations they want to establish among their data. They are in a permanent exploratory phase. I believe these organizations could be described as "pre Codd", but most of them have been "pre Codd" for decades, and they will always be "pre Codd". If you force them to specify relations among their data, you will get answers exactly as useful as these:

[http://blog.jimmyr.com/Funny_student_Exam_Answers_13_2008.ph...](http://blog.jimmyr.com/Funny_student_Exam_Answers_13_2008.php)

MongoDB is useful in this context. Start acquiring data. Don't pretend you know what your schema is. You do not know what your schema is. The schema is changing all the time anyway.

Is there a place for relational databases? Yes, because sometimes some parts of the business become steady for some length of time, and for that part of the business, capturing fixed sets of data, with fixed relations, is very useful. But we should not pretend that this situation holds where it does not. I am not convinced that this is even the general case, though there is an overwhelming tendency in computer science, and in business, to pretend that fixed-sets-with-fixed-relations is the general case. If you feel it is, then you have been working at places facing conditions far more steady than what I have seen, or perhaps you are simply considering a shorter time frame than I am.

<comment><USER18> The thing is, you still have a schema. You always have a schema. It's just defined implicitly in your application rather than explicitly in your database. I agree that during dev time Mongo conveniently eliminates the hassle of recreating your DB all the time, but I just don't see how it makes the problem of schema easier. And even if you desire this flexibility, I can't see the advantage over using Postgres with a JSON type for the flexible parts of your data, and relational data for the bits you know about.

And without knowing your schema in advance, how do you ensure consistency? If you want consistency with mongo you basically need to either group all data that will get modified in any one logical operation into a single document, or you need to have (potentially extremely complex) strategies for resolving conflicts in between modifications to groups of documents. Achieving either implies a decent bit of domain knowledge.

</comment></comment><comment><USER22> As mkohlmyr mentions, it is unfortunate that MongoDB is offhandedly dismissed, however by the second paragraph of the linked article you have to appreciate how such hostility comes about.

 _But what is it that SQL databases could not solve which lead to the evolution of NoSql databases_...{some "big data" changes to the world}... _Which means processing huge amount of data. Which SQL databases were never designed for._

Firstly, specialized data storage and retrieval, including unstructured or document oriented, existed long before SQL did. Your filesystem is just such a system. Everything old is new again.

And secondly, a citation is required for the SQL databases "were never designed for" huge amounts of data claim. To start with, a definition of huge is necessary to make such a claim. 1GB? 1TB? 100TB? There are SQL solutions that work with all of those with ease. Many of the largest databases on the planet are humming away on SQL systems right now. SQL is abstract from the underlying platform, so if you have a cluster of 100 machines each in front of 1000 storage arrays each in front of 100 SSDs, it doesn't suddenly become "NoSQL".

SQL databases are generalized solutions. They generally do not solve specific, individual problems as well as precisely engineered solutions, which is why giant companies like Google, with extremely precise needs (e.g. index the web) have solutions that do a much better job for their purposes. Does that apply to _your_ needs at all, though? Are you looking at your specific requirements, engineering precise storage and retrieval that is optimal? Probably not. Saying "MongoDB is under the umbrella of NoSQL, and NoSQL also kind of encompasses highly specialized solutions from industry leaders, so it will work for my startups contacts databases" is very, very poor, misleading reasoning. But we see it all of the time on HN in regards to solutions like mongodb. Which again is how you get responses that might seem hostile.</comment>


Build a website like taskrabbit.com... But better ($100) - <AUTHOR> http://www.peopleperhour.com/job/build-website-like-taskrabbit-com-476092

<comment><USER2> Either a troll, typo, or somebody incredibly naive. I'd be curious to hear from people with experience though what a realistic budget (both time and money) for something like this would be.</comment>


Gaia: The 'impossible space mission' ready to fly - <AUTHOR> http://www.bbc.co.uk/news/science-environment-23779294 <comment><USER3> The article is very well written. It explains what the motivations are, but you also get actual technical insight on how it all is done.

<comment><USER4> Could someone with better knowledge of astronomy/aerospace explain (with less hyperbole) which part is the "impossible" part here? I don't really get it. Reading the article, I got that they're sending a telescope into space with a very large camera sensor and will record information about many stars.

<comment><USER5> > Could someone with better knowledge of astronomy/aerospace explain (with > less hyperbole) which part is the "impossible" part here?

Hyperbole is the operative term. When first proposed it would have been impossible with then-current hardware, but since such missions take time to germinate, sometimes people use the term "impossible" to add a sense of drama and daring, but with the expectation that the goal will become possible in time.

Also, according to Arthur C. Clarke, "When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, he is very probably wrong."

</comment></comment></comment><comment><USER6> With the incredible amount of data I'm sure this will produce, I wonder if any new distributed computing initiatives will be launched to handle it.

<comment><USER7> Gaia will produce quite a lot of data, approximately 200 TB over 5 years, according to this Wikipedia article ([http://en.wikipedia.org/wiki/Gaia_(spacecraft)](http://en.wikipedia.org/wiki/Gaia_\(spacecraft\))), however that feels a bit hand-wavy. Even if we assume an order of magnitude error, and its more like 2 PB, it is still far far less than the 15 PB (images plus metadata) that will be produced over 10 years with the Large Synoptic Survey Telescope. And yes, the LSST is driving a large number of distributed computing research projects because of its unique processing requirements.

<comment><USER8> I'd be interested to know the ratio of the L0 data size to the L2/3/4 data[0] size – in other words, how many downlinked bits of sensor readout are processed per bit of useful science data? Of course that won't be a hard number; I'm just curious to get a sense of the general scale on which the pipeline reduces pixels to physical parameters.

0\. [http://en.wikipedia.org/wiki/Remote_sensing#Data_processing_...](http://en.wikipedia.org/wiki/Remote_sensing#Data_processing_levels)

</comment></comment></comment><comment><USER9> It truly boggles my mind how scientists and engineers keep doing these amazing feats.

</comment><comment><USER10> "There are also no moving parts anywhere on Gaia. Even the antenna to communicate with Earth has been designed to point electronically, not mechanically."

Good, but on the next line...

"And if the satellite does need to make fine adjustments, it has been equipped with thrusters that can squirt just 1.5 micrograms of nitrogen gas a second."

Is there really no moving parts on Gaia?

Hmmm, they could try to use the Earth magnetic field for orientation; I guess the microthrusters were better...

P.S. And saying "accuracy of about seven micro-arcseconds for the nearest stars" is a little bit inkorrect.

<comment><USER11> Those micro-thrusters are probably piezoelectric, like the nozzles on ink jet printers.

They move a bit I guess, but there is no net motion - they transmit no force or vibration outside of the device. They flex, but have no relative (sliding) motion.

There are other parts on the satellite that can bend - will you call that a moving part as well?

<comment><USER10> Piezoelectric actuator still relies on a mechanical motion. It has to be - <USER2> idea of nitrogen nozzle is to have a storage of nitrogen under some pressure in a closed volume, and to be able to open that volume to let some gas out. That opening has to be mechanical - unless they use some exotic force fields to keep nitrogen from escaping, in which case it's hardly a (regular) nitrogen thruster anymore.

Flexing is still a motion. That, however, can be compensated with an opposite motion in another gas channel.

If other parts of satellite can bend on demand, they'd need an actuator or, alternatively, one can use Earth magnetic fields to reorient the spacecraft and let external forces affect it unevenly, thus providing bending. This, however, is outside of the scope of the article.

So, to summarize - either secondary subsystems on Gaia are quite unconventional, or the article isn't quite precise.

<comment><USER11> Conventionally a moving part is one which moves relative to another, but flexing parts are not included in the definition.

The reason for excluding them is that _EVERYTHING_ can flex. So if you included that in the definition it would make it meaningless.

</comment></comment></comment></comment><comment><USER12> I don't get what's so "impossible" about it.

Even if it weren't built, it sounds completely plausible.

<comment><USER13> A single device that observes and catalogs a billion stars sounds like science fiction. That would be a feat even in a software simulation. Doing it in orbit is crazy.

<comment><USER14> The 'single device' will just be doing the observing. The cataloging will be done by many more devices on the ground.

</comment></comment></comment><comment><USER15> The answer is 42.</comment>


iPhone 4S First Weekend Sales Top Four Million - <AUTHOR> http://www.apple.com/pr/library/2011/10/17iPhone-4S-First-Weekend-Sales-Top-Four-Million.html

<comment><USER2> Oh yeah, the iPhone 4S is such a flop. Obviously, the lack of a new teardrop form factor is totally sales and Apple should recant from their heathen ways and do the smart thing, like the other mobile phone manufacturers.

One wonders where Technology mags find all these seemingly countless analysts who deride every iPhone (or at least are unimpressed)...

<comment><USER3> Even if the iPhone 4S would've been a worse phone than iPhone 4, they would've still sold at least a million units in first weekend. I think everyone knows that.

But this sales boost will confirm to Apple that it's ok for them to just release the same phone for 2 years with some spec upgrades in the 2nd year.

<comment><USER4> _Even if the iPhone 4S would've been a worse phone than iPhone 4, they would've still sold at least a million units in first weekend. I think everyone knows that._

No, I don't think everyone knows that. If we learned anything from the past few Apple product launches, it's that customers aren't shy about complaining even if they aren't completely sure what they're complaining about.

 _But this sales boost will confirm to Apple that it's ok for them to just release the same phone for 2 years with some spec upgrades in the 2nd year._

It _is_ okay. The economics behind producing this many millions of a devices doesn't allow them to change the design every single year without jacking up the price. And for what?

A "tick tock" schedule, like the one Intel has adopted, makes tons of sense for Apple too. You just can't completely rethink a product design every year once it's matured.

<comment><USER3> But that will be bad for customers. You don't see the other manufacturers keeping the same phone for 2 years. Apple is making billions in profits per quarter, and you're saying it would be bad for them to make it more often than 2 years? Then why not 3 years to save even more money?

And if you don't think they needed to change the design of the phone this time, just take a look at this:

[http://www.youtube.com/watch?feature=player_embedded&v=e...](http://www.youtube.com/watch?feature=player_embedded&v=elKxgsrJFhw)

No wonder nobody wanted to "copy" its design and build. It's so weak, even some plastic phones are more solid than it.

<comment><USER5> > But that will be bad for customers. You don't see the other manufacturers > keeping the same phone for 2 years.

Similarly, you don't see other manufacturers producing phones that they intend to still thoroughly support in a couple years time, which is why there is so much fragmentation in the Android ecosystem.

I think this is a key thing in Apple's market strategy across the board - you're not just buying hardware that will be out of date in 6 months time, you're purchasing a utility which will be more or less current for a couple years to come (like what we've seen in Macs).

I think its a smart move. It builds trust with the user base.

</comment></comment></comment></comment></comment><comment><USER6> The biggest factor here is that this is the first U.S. iPhone launch on multiple carriers. That's more than double the addressable market, and I'd imagine that the effect on purchasing decisions goes well beyond that. In short, forcing users on one carrier made the iPhone something of a niche product, but now it's mainstream.

<comment><USER7> I'm also curious how many $99 iPhone 4s and free 3GS Apple sold over the weekend.

</comment></comment><comment><USER8> Can anyone put that into context?

<comment><USER9> According to [http://www.phonearena.com/news/iPhone-4-sales-hit-a- million-...](http://www.phonearena.com/news/iPhone-4-sales-hit-a-million- units-over-the-first-weekend_id17160) AT&T sold 1.7 million units on the first weekend.

I wonder if Steve Jobs being dead actually is a reason for increased sales. It could be like a singer dying and people buy more of his records.

On the other hand it might be just that many people held back buying the iphone 4 and waited for the next one.

<comment><USER10> I too wonder the same thing. Especially with the pre-order record for a phone that seemed to initially miss expectations upon announcement. The articles I've found on the topic are just speculative[1][2].

[1][http://www.ibtimes.com/articles/228095/20111010/iphone-4s-fo...](http://www.ibtimes.com/articles/228095/20111010/iphone-4s-fortunes- linked-to-steve-jobs-untimely-death-loyal-apple-customers-drive- iphone-4s-sales-a.htm) [2][http://sanfrancisco.ibtimes.com/articles/228902/20111011/iph...](http://sanfrancisco.ibtimes.com/articles/228902/20111011/iphone-4s-sold- out-pre-order-record-memory-steve-jobs.htm)

<comment><USER11> The missed expectations were held by fanboy contributors to MacRumors and the equally witless anti-fanboys (fandroids for the most part) who chimed in with "Ha! No new case after 18 months? Lame! Fail!"

Perhaps the buyers were at the end of a contract, or looking to upgrade, or simply saw the best phone on the market.

<comment><USER12> And tons of guy-on-the-street types (both real and those dreamed up by news media, propagating the meme further) were disappointed, too. But the frame has shifted over the last few days and now everybody's talking about Siri, theoretical teardrop case be damned.

</comment></comment></comment></comment></comment><comment><USER13> It seems like the "Apple is going bankrupt" stories have finally disappeared. Looking back I wonder when that happened. Now we're down to "Apple's new iPhone might not sell quite as fast as some other guy thinks it will".

</comment><comment><USER14> The launch "delay" probably had something to do with this as well. Anticipation was already high. Plus perhaps it allowed them to launch in more countries simultaneously. Product delays are not always because of manufacturing issues. Sometimes it can be a business decision.

<comment><USER15> It makes more sense to me that the delay was down to iOS 5/iCloud and the surrounding infrastructure.

20 million iOS 5 users in 2 days is a very quick ramp up.

<comment><USER16> I would imagine you are on the right track about needing iOS 5/iCloud ready first. I would also add that Apple probably needs to replace the fall music event with an annual iPhone event since, although still high, iPods don't net the press of a new iPhone.

</comment></comment></comment><comment><USER17> [http://www.apple.com/pr/library/2010/06/28iPhone-4-Sales- Top...](http://www.apple.com/pr/library/2010/06/28iPhone-4-Sales- Top-1-7-Million.html)

</comment><comment><USER18> I wonder what a warehouse with 4M iPhones in it looks like. That is a huge stack o'phones.

</comment><comment><USER19> Being a 3GS owner, I feel like an ugly stepchild. Should I upgrade to 4S, and then watch (once again, as in the case of iphone 4) as the iphone 5 rolls out early next year? If the i5 comes out in Feb, it might be worth the wait. If June... I'm not so sure.

First-world problems.... ;-)

<comment><USER20> Buy the unlocked 4S a few weeks from now in November. (Yes, Apple will be selling it officially!)

Use either the AT&T or T-Mobile prepaid plans. (You are pretty much guaranteed to save money over the cost of a two-year contract.)

Sell your 4S on Ebay after a year, and buy your new phone.

Voila. First-world problem solved. (This is what I'll be doing, anyways.)

Bonus: if AT&T or T-Mobile turn out to have bad reception in your apartment, you can effortlessly switch to the other carrier.

<comment><USER21> As far as I know, the 4S still doesn't support T-Mobile freqs for > 2G..

<comment><USER22> This is true, but they make up for it with a $30/mo plan that includes 100 minutes of talk and unlimited text and data. There's a $50/mo plan that includes unlimited everything. Personally, that's a trade-off I'm happy to make.

<comment><USER23> I can't find either of these plans on their website. I went to buy a Micro SIM card, and the only unlimited everything plan is 105$ a month. There is no 100 minute plan or 30$ plan that I can find.

<comment><USER22> Both are right here. The $30 plan is available online or through Walmart. Pre- paid monthly, no contract required.

<http://prepaid-phones.t-mobile.com/monthly-4g-plans>

<comment><USER23> Thanks, no idea why I didn't see this list before.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> This is not about the general public being utterly amazed with the iPhone 4S.

This is what happens when there is an 18 month period between product refreshes of a popular phone. It turns out that several million people have been holding out for "the next iPhone" for the last several months. Is this surprising anyone?

<comment><USER12> Seems like a statement in need of support. Certainly that's a factor, but it seems like a _ton_ of people [including non-Apple-geeks] are interested in and talking about the phone (especially Siri but also the camera) and saying they're "utterly amazed".

<comment><USER25> If the previous statement is in need of support, surely you have a cite for that _ton_ of non-Apple-geeks saying they're "utterly amazed" by Siri and the camera, right?

<comment><USER5> <http://twitter.com/search?q=siri>

or for something more visual

<http://trendistic.indextank.com/siri>

People are talking more about Siri since the release date (on average) and for more dramatic effect, look at the results over a 30 day timeframe - not bad considering that Siri is essentially 2 year old technology.

Yeah, people are impressed by Siri, even if they just want to make fun of it (in Australia we call that Tall Poppy Syndrome)</comment></comment></comment></comment>


On "From Java to Kotlin and Back Again" - <AUTHOR> https://zsmb.co/on-from-java-to-kotlin-and-back-again/ <comment><USER2> After developing software for 20 years, hearing the argument of 'X language is better than Y' gets a bit boring. At the end of the day, you can write shit code or good code in either language in the same way that you can build a shit house or a good house out of brick or stone.

No language will prevent a team of developers from building an un-maintainable mess no matter how good it is (and I have seen a few). Proper design skills and knowledge of 'good' software architecture will make or break a project every time. Stop getting hung up on languages.

Unless you're being asked to develop in C (then I applaud you), then agree on a language that will still exist in 6 months time and then on with the difficult part...writing decent code.

<comment><USER3> Agreed, but do you think that a language that reduces lines of code considerably (lets say clojure vs java) is bike shedding or is part of using "good design" ?

<comment><USER2> No it's not bike shedding. The team should certainly choose the most appropriate language. Even if not all of them have experience in it. If they decide on clojure then go for it. But agree on something and move on.

Also, saving lines of code isn't necessarily the end goal for me in a language choice to be honest. Get rid of boiler plate code yes, but what I'd like to aim for is code that is easy for the next developer to understand and support as quickly as possible, whether thats 10 lines or 20 lines.

</comment></comment></comment><comment><USER4> Reading the first article I was left with the impression that the author's team switched to Kotlin just for the sake of switching to Kotlin, tried their darndest to write it like it was Java, and then was just upset that it wasn't Java.

<comment><USER5> I read it as: the author was a Kotlin skeptic whose team wanted to use Kotlin, so was trying to find out whether they could use Kotlin for the sake of their team while still writing Java-like code themselves. Given how Kotlin pushers have been marketing it as close to Java with easier Java interop than other JVM languages (falsely if you ask me), that seems like a reasonable approach on the original author's part.

<comment><USER6> I don't think that setting yourself up for failure is a good way to approach a change :/

<comment><USER5> Doing the thing the marketing tells you you can do is only "setting yourself up for failure" if you know the marketing is bollocks. (And even in that case, it might be the easiest way to expose the fact).

</comment></comment></comment></comment><comment><USER7> I find debates over "is language X good or is it bad" to be a particularly subjective topic in programming. Not that there's nothing objective you can say about them, but opinion pieces like these are always rife with personal preferences, and often (like in these two) interspersed with pettiness.

[https://twitter.com/computerfact/status/968333338267324417](https://twitter.com/computerfact/status/968333338267324417)

<comment><USER6> There are still legitimate tradeoffs that can be discussed.

For long, Kotlin has meant way longer compilation times. That's no longer the case (or at least way harder to determine, kotlinc is even faster than javac in some projects) but that was a legitimate bullet to bite 2 years ago.

Sadly I agree with the author of the second article, all the reasons given are very petty and I wonder how much of these 6 months were really spent writing kotlin.

</comment></comment><comment><USER8> I dislike blog post 'responses', because it's the equivalent of two people shouting past each other.

As the author of this blog post notes, there are good responses in the /r/programming comments[0].

[0] [https://www.reddit.com/r/programming/comments/8lmnl2/from_ja...](https://www.reddit.com/r/programming/comments/8lmnl2/from_java_to_kotlin_and_back_again/)

<comment><USER9> Both are speaking to an audience, and the point/retort approach is how most reasoned discussions occur, and how we move forward. Some see them as confrontational, and thus unsavory, which is unfortunate.

<comment><USER8> We can also have reasoned discussions directly with each other (as you and I are here). Here we may have an audience of other forum members, but the same audience can see the same back and forth (and contribute).

In my opinion, the 'speaking to an audience' via indirect blog posts doesn't really help us move forward as much as direct discussions do. Since we already had thorough discussions about this topic both here and on reddit, I don't see the value in this post.

I will admit that this type of indirect conversation isn't without its uses though. For one, I don't think the original blog author participated in the discussions here or on reddit. So our discussion boards were also indirectly attacking that post, without much room for the author to respond. Similarly, it's impossible to have a discussion with everyone you disagree with. Sometimes the best you can do is state your opinions, and let people consider them as they will.

I guess a better statement I could have said earlier is that we already have a forum (right here) for discussion of articles, and we don't need the disconnected responses-via-blogposts, because we can just discuss things normally here.

</comment></comment></comment><comment><USER10> Blank page in Edge. Object doesn't support property or method 'replaceWith' kagu.js (663,4)

<comment><USER11> In case anyone else uses Edge, this is what this page looks like on Firefox when you use a VPN [https://i.imgur.com/IsvknB2.png](https://i.imgur.com/IsvknB2.png)

/s

PS.

wow, what a garbage...

<comment><USER12> It's one of those blogs that are implemented as a web app that reads the content with JavaScript, because HTML is not enough...

The text is a JSON at [https://zsmb.co:8443/public/articledetails/url/on-from- java-...](https://zsmb.co:8443/public/articledetails/url/on-from-java-to- kotlin-and-back-again)

Btw, that 8443 port is probably blocked by firewalls in many enterprise networks. They usually allow only ports 80 and 443.

<comment><USER13> Hey, site author here.

I'll try not to spam too much and just reply to this one comment to address the feedback around here about the technical aspects of the site.

\- Yes, it's a completely pointless web app in the place of what could be a very simple, quick, and well functioning static HTML site. I'm using it as a hobby project to test drive a framework I'm working on. I do desparately need feedback on it, so thank you for everyone who's reporting issues!

\- Yes, I didn't have time to do any compatibility testing, so right now I only know that it works alright in Chrome. There are probably things that are very easy to fix (e.g. not using those couple functions that are missing in Edge), I'll have to look into these later.

\- I don't know if I can solve the port issue yet, I understand that random ports besides 80 and 443 are often blocked, I've actually ran into this just trying to access my own site already too. I only have this one domain and one server for it so far, and I need separate ports to serve the app and to expose the API it talks to. I'll have to think about how I can solve this later.

<comment><USER12> From your answer I guess you have a static web server on port 80 and another one on port 8443. The URL of the JSON starts with /public so I guess it's completely static.

If you can setup the second web server then you're probably in control of the server. How about reverse proxying an /api URL to localhost:8443?

If you can only run another web server on 8443 and can't modify the configuration of the main one on port 80... You simply serve the static JSON file from port 80. This is too easy so you probably can't do that. Do you have an application serving those files on 8443? Maybe run it once to create a file and store it where the web server at port 80 can serve it. Some small script with curl should be enough.

</comment></comment></comment></comment></comment><comment><USER14> This page doesn't render with JS enabled, even in Reader Mode. Disappointing.

</comment><comment><USER15> FIrst article was an opinion and second article response is also an opinion in Kotlin defense. Opinion here is very subjective with problem at hand. Switching from one language to another should happen after you fall in love with what that language was offering not just for the sake of trying. Not a good idea to waste time trying without loving it.

"This is like marrying without love"

<comment><USER16> > Various small sample surveys have been done to ascertain if arranged > marriages or autonomous marriages have a more satisfying married life. The > results are mixed - some state marriage satisfaction is higher in autonomous > marriages, others find no significant differences.

[https://en.wikipedia.org/wiki/Arranged_marriage#Love_and_res...](https://en.wikipedia.org/wiki/Arranged_marriage#Love_and_respect_in_arranged_versus_autonomous_marital_life)

</comment></comment><comment> V-2 _" And it's about 7 extra characters in a line of this length."_

(regarding the example from "Class literals" sections)

Well, the Kotlin line is still shorter overall, despite the ".java" bit, because it allows to get rid of "new" keyword (two of them), and to replace the first occurence of "GsonBuilder" with "val".

<comment><USER17> People who live in glass houses shouldn't throw stones.

A java programmer complaining about another language being verbose is hilarious.

</comment></comment><comment><USER18> I've tried a few different languages in different companies and positions. I think I understand the gist of the original article.

It's like saying German is more effective to write with than English or that German is easier to express poetry than English.

</comment><comment><USER19> In other words "I don't like language X because it's not exactly like language Y."

</comment><comment><USER20> Could just be me but the site appears to have been Slashdotted (sorry -- inspired to use a throwback term based on the other HN story about WebDav).

Assuming this is a story about Android development, there will be the sequel: "From Java to Kotlin and Back to Java -- before surrendering to Dart and Flutter." :-)

</comment><comment> V-2 _" Java programmers are male."_

Not typically no

<comment><USER21> I think it is a reaction to the author using a gender specific pronoun («he») in the example

<comment><USER22> How is that relevant to the topic of answering the criticism?</comment></comment></comment>


How Immigration Uncertainty Threatens America's Tech Dominance - <AUTHOR> https://www.wsj.com/articles/how-immigration-uncertainty-threatens-americas-tech-dominance-1486031582 <comment><USER2> The general direction of the Trump plan regarding H-1b is the way to go. The lottery needs to be replaced with a demand system where the highest salaries get slots. A floor of $100,000/yr should exist and adjust for inflation. Next, generously expand the green card fast track, as this category of employee, as an immigrant, is a free agent to move among companies or to start their own business.

To date, as we all know, the H-1b system has primarily been used to arbitrage for lower wage by Indian companies and mostly non-tech big corporates, where they bring in $60k/yr "systems analysts" who are in fact doing $100,000+/yr software engineering roles.

<comment><USER3> The H1B as it is has many problems, but a big salary floor is not the way to go in my opinion. Remember H1B is not just for tech workers. If you want to hire, say, an interpreter of a specific foreign language to work on a community in rural Alabama temporarily, a $100,000 minimum wage would be absurd.

They instead need to go after the companies that learned to game the system. I'm not sure what the solution is here. A point/demand-based system like other countries have is probably wise, but given the share of mind the US still has in potential emigrants worldwide, and the breadth of different positions available, it'd be a pretty complex (and likely unfair) one.

<comment><USER4> Why would that be absurd? A highly specialized skill in an area that we can infer is generally less desirable to live _should_ command a higher than average wage. Much higher if the situation is so desperate that a foreign worker has to be sought.

Also: the majority (by far) of H1-B visas are for technology work. It may not technically be "tech only" but in practice it may as well be.

<comment><USER5> I think one of the Dem senators had proposed a plan that had the floor relative to the location and the job, so in this case you'd have to offer 150-200% of what an Ethiopian translator in Alabama would recieve, before you'd be allowed to hire someone via a Visa. That general principal seems reasonable to me, and less Silicon Valley centric than just a flat floor at whatever they think is reasonable for a software dev.

Though obviously a single number is less work.

<comment><USER6> No doubt that would open the door to all manner of skullduggery. Infosys then opens a new operation in West Armpit, Alabama and their employees now make 150% of the going rate for Java developers there in West Armpit. It is just a weird quirk that said employees wind up doing lots of travel...

<comment><USER7> There's a few fixes to that too. Make the pay scaling regional or put in provisions that increase the floor based on percentage travel or where the visa job would work.

<comment> Paul-ish This is how laws get really complicated. Wouldn't a more complex solution end up costing more (to the companies you are trying to help) than a simple solution?

<comment><USER7> It depends on what you're trying to do. Outwardly H1-Bs are supposed to be about bringing in talent that can't be filled with a US worker which should fetch a premium. To that end having just a blanket floor doesn't really make sense because a premium wage in Small Town, USA is a rounding error to large corporations in Big Tech Hub, USA. But you can't make the sliding scale too location sensitive because then you just open a new way to game the system with having big contractor sweat boxes all operating out of the middle of North Dakota or somewhere with market so tiny prices. I don't think a simple law could ever really run H1-B if the goal is 'bring in premium talent' for hard to fill positions especially in tech positions where location is becoming less and less critical.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> The tone of tech companies does not resonate with the electorate. The Bay Area basically says to America: We have foreigners here who founded some companies and got rich, so we don't want your visa restrictions.

How do tech executives motivate the average American to support this stance? Taxes? IT companies and their owners enjoy a very friendly tax treatment. Jobs? The largest IT companies employ only 20-60k people each (for comparison, Walmart employs 2mn). Product? Software is a tradeable good, so Americans can buy it from anywhere. Pumping GDP numbers? The industry is flat for the last 10+ years.

Tech companies must put something on the table to get better immigration laws.

<comment><USER9> It may not be the desired tone but essentially that's how America got populated in the first place, a place where foreigners with some disadvantage in their country of origin could get rich. And many did.

Kicking the door behind you closed once you've got yours or because you're afraid new immigrants will take your job is hypocrisy of a terrible kind for a nation that was founded on immigration.

<comment><USER10> > _that 's how America got populated in the first place_

This isn't 1910. We are the top 5 in the world in population. We don't need as much immigration as we used to.

Americans should benefit from the American system before foreigners, like, you know, how every other country works.

<comment><USER11> In addition with looming automation, we simply cannot employ all the people who want to come here for a job, either skilled or unskilled.

We have large swaths of underemployed Americans but it costs companies too much to recondition them, so they prefer new bodies over training the domestic workforce.

This should be an opportunity for the likes of YC to double down on extending their know how to American women, American minorities and other underprivileged Americans, but instead they bemoan how a few foreigners are affected all the while ignoring how those same countries might treat not only foreigners, but their own minorities.

<comment><USER12> The YCs and large companies can easily move their investments and offices to Canada and hire the world's best and brightest there.

I'll give you the often conservative advice:

Tough luck? pull yourself up by your own boot straps! Go to school. Go back to school. Work hard, and interview with Google/Amazon/Microsoft again.

And stop perpetuating the idea that you are at a disadvantage because of immigrants and refugees. If you end up with a job at Apple or eBay or Expedia btw, remember that your livelihood was made possible because of the hard work of immigrants and refugees.

<comment><USER11> In tech you don't have to be the first to market, you only have to have a market that's ready for you.

Xiaomi, tencent, alibaba. Not fist to market. All doing well. All done with a very predominant domestic labor force.

My point, is it's not do much the foreigner, or even the local, but the opportunities made available by your domestic economy.

</comment></comment></comment></comment></comment></comment><comment><USER13> Hm, maybe. It's always been uncertain, though. I know plenty of international students when I was at MIT who weren't sure how the visa situation would play out and if they'd have to go back home or what.

I'm a little hopeful that the discussed H1-B reforms may actually _help_ countries obtain particularly niche talents more than the outsource-lottery played now.

But I think the real threat to our tech dominance is privacy concerns. The U.S. _owns_ the cloud with AWS, GCP, and Azure, but if other countries can't use their services due to US government overreach, then I'm sure strong competitors will pop up elsewhere.

<comment><USER14> If you think US owns the cloud, you're not paying attention to China. China owns China's cloud. The US has little to no visibility into these fleets, but they're huge (multiple million-server farms) and they have tons of national customers.

This development is politically interesting. National clouds are now a strategic interest. The EU is basically far, far behind in their internal development of national clouds.

<comment><USER15> I would never risk hosting something in China's cloud fearing that they will shut down my servers to make room for a Chinese competitor.

<comment><USER14> You're not the target market, anyway...

</comment></comment></comment></comment><comment><USER16> Things that a student coming to US faces from a developing or under-developed country:

1\. Undergo TOEFL and GRE and apply to various universities

2\. Save up enough money or even mortgage parents property to pay for tuition and even buy flight tickets

3\. Adapt to a new culture, study hard while working part time

4\. Finding a job (While its definitely easy for a CS graduate its not the same for other majors) but yet, cannot be eligible to many companies that don't want to sponsor visa in long term, not eligible for small startups with no e-verify.

5\. Make sure you do all the paper work with OPT, be updated on travel requirements and other stuff

6\. Cannot switch jobs easily and should find an employer that has offices outside USA in case of no luck in lottery

7\. Apply for H1B twice or even thrice just to find out that you did not get it!

So much of hard work and planning just to find out that it all comes down to luck in the literal sense.

<comment><USER17> > study hard while working part time

F-1 visa students are not allowed to work at all, except in a part-time position at their current school.

<comment><USER18> Yes,that's what the parent have been referring to. I worked in the school as a TA and that's still plenty to manage which doing course work.

</comment></comment></comment><comment><USER19> The current system is in dire need of reform. I was fortunate enough to get a visa to live/work there for a year, but now I remote work from London, and I strongly prefer it to living in the Bay Area. The immigration process was consistently unreliable and unpleasant. Would rather not have a lottery dictate my future plans, and as the article says, remote working is on the up - a lot of people I know who were in my position agree and are doing the same. American bureaucratic faff aside, the tech sector always finds a way!

<comment><USER20> hey, I myself have also been work remotely for 10 months now. Do you mind me asking what tech-stack you are using?

</comment></comment><comment><USER21> Immigration has been uncertain for a long time. YCombinator founders have been working on their startups on 3-month visitor visas. Top graduate students can stay in the US for a year, then they need to enter a lottery to be allowed to stay for another few years. Trump changes barely anything.

Unpaywalled: [http://archive.is/BHfyN](http://archive.is/BHfyN)

<comment><USER9> Trump changes plenty, in the past it was assumed that the USA would honor visa once they were issued, now it turns out not to be the case.

Essentially this is breach of contract.

<comment><USER22> Yea but who will stop him?

<comment><USER23> Congress, hopefully. Call your senators and representatives! There's a Senate bill that needs support.

[https://www.congress.gov/bill/115th-congress/senate- bill/248](https://www.congress.gov/bill/115th-congress/senate-bill/248)

<comment><USER24> Oh please. Congress has been stuffed with GOP people who are in league with him. The only time they complain is when he does something that isn't conservative enough for them, like when he issued a statement that his administration would uphold the LGBT anti-discrimination order from Obama, and a few GOP congressmen complained how this infringes "religious freedom".

The only people in Congress who'll oppose him are (some) Democrats, who simply aren't numerous enough to make a difference.

You might as well get used to the new reality; Trump has the power to do almost anything he wants, unless it's so bad that it pisses off much of the GOP.

<comment><USER25> > The only time they complain is when he does something that isn't > conservative enough for them

That's not entirely fair. Several Republicans have objected to things he's done on other bases, including the immigration E.O.

The partisan duopoly created by the structure of the electoral system creates an illusion of a simple unidimensional political divide, and partisan tribalism is high, but, still, even conservatives in Congress sometimes have more nuanced policy views than "is it conservative enough?"

<comment><USER24> >That's not entirely fair. Several Republicans have objected to things he's done on other bases, including the immigration E.O.

Ok, to be fair, out of several hundred Republicans, you're going to find a few here and there who object to many things he does (and the ones who object will be different, based on the issue). Similarly on the Democrat side, you're going to find a few here and there who break ranks with the rest of the Dems and side with him.

But by and large, you're not going to see any unified opposition from the GOP. You might from the Dems, but that doesn't matter much because they're a minority in Congress.

<comment><USER25> Unified opposition from Dems + some opposition from the GOP can be enough to constitute a majority, though. (It's why the DeVos nomination is on the edge of failing right now.)

<comment><USER24> Yes, I'll admit that in some extreme cases like that, Congress might be able to push back against Trump. But it has to be pretty ridiculous it seems (DeVos is an especially horrible pick).

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> Meh. I doubt it. The US has huge advantages: a large internal market, large numbers of early adopters, an appetite for risk, an innovative mindset, excellent research institutions, plenty of world-class cities, lots of cash...

I mean, yeah, the current furore is "not good", but it doesn't cancel out the combined effects of all those advantages (and I've only listed a few!)

<comment><USER27> Well the excellence of the research institutions (as far as CS and STEM in general are concerned) is pretty heavily dependent on immigration...

Also remember that people aren't completely rational actors, and an action like this carries a lot of symbolic significance for both proponents and opponents. Would you want to stay at a party your friend was rudely kicked out of for no reason just because the booze is good?

</comment></comment><comment><USER28> Wherever there are big risks there are also great opportunities.

As a Canadian, I wonder how/if Canada can benefit from Trump's lack of vision.

We already have the same time zone, language, almost same culture, similar economic regulations, tight economic integration with the US, a very skilled and educated workforce, some good centers of technological excellence and an immigration policy regarded as the best in the world.

If only we could convince more American companies to open branches in southern BC, Ontario and Quebec...

<comment><USER24> How exactly are they supposed to afford to live there? A ramshackle crack house in Vancouver costs $1M+. Silicon Valley is dirt cheap by comparison. Toronto is also quite expensive these days.

Also, Canada does _not_ have the same language if you're talking about Quebec (which you mentioned).

The only way Canada makes any sense is if somehow Calgary and/or Edmonton suddenly become fast-growing tech hubs. But have fun with the cold. Most tech immigrants are not going to be too enthusiastic about that, considering most of them come from very warm parts of the world like India.

</comment></comment><comment><USER29> I prefer the points system that many countries, including Canada, implement.

Its a lot more deterministic and clear whether a person will be admitted or not instead of a lottery or salary based system.

<comment><USER30> It also has drawbacks. You get residency in a country, but can't find a job. I remember reading a number of stories about Canadian immigrants in that situation.

The US employment visa system ensures a job is waiting for any immigrants.

</comment></comment><comment><USER31> in my experience

> Its borerline impossible to find someone who will sponsor your visa in April > for a job that begins in October

> you can be rejected by h1b visa lottery

> if you win the lottery, your visa application can be denied

> you can be rejected by immigration official at visa interview

> You can be turned around at port of entry

> you visa might not renew after 3 yrs, forcing you to go back.

so on... . These things happen _all_ the time even to the most well qualified/well prepared .

Immigration uncertainty is not new

<comment><USER32> But it has been getting worse and worse in the last 10-15 years.

</comment></comment><comment><USER33> Let's assume that after years of drastically reduced immigration, America's tech dominance remains unchallenged. Would that make you happy or sad?

<comment><USER34> Would you be happy or sad if after years of drastically reduced Immigration America's tech dominance is destroyed?

<comment><USER35> That assumes that the sole reason America has tech dominance is because of international diversity. But we've always been tech dominant, and according to many people we're not even diverse.

<comment><USER36> There are certainly a couple of examples of international diversity, and refugee acceptance, among two of the largest tech companies ever. Steve Jobs is the son of a Syrian refugee. Likewise, Sergey Brin's family came to this country as a Russian refugee.

</comment></comment></comment></comment><comment><USER37> America, UK or others can close their borders all the way they want. Programmer who don't get the Visa won't switch careers, but will be programming in a different country.

As American startup, it's already common to hire people remotely in other country as "contractors". Majority of top 50 Silicon Valley companies has a tech office outside of USA. Continue with closing borders, and center of tech will move somewhere else. Many countries are drooling at having their own Silicon Valley, but American politics treat it as given (same as other areas of American dominance).

</comment><comment><USER38> I think the best way would be to sort the applicants by compensation, and grant H1B starting at the highest compensation on the list until you run out.

For a fixed number of visas, this maximizes the utility of the applicants. This pairs the most productive workers with the most productive employers.

This would be beneficial to both American workers and foreign workers. The only one who would not benefit would be companies trying to get workers below market rates. I do not see why we should prioritize this groups interests over the workers interests.

</comment><comment><USER39> No matter what happens in the US immigration department, we already know things are moving fast in India and China. 2.5 billion people versus 60-120k H1b's per year?

<comment><USER10> Yeah but America has a lot more established companies, universities, and infrastructure. To get the required resources for the 2.5 billion people in China and India is gonna be a while.

<comment><USER39> H1b's are for skilled workers who already went to college in their respective countries. So you can take universities out of the picture.

In terms of companies, think about Uber, Amazon, FB, etc. They're huge right? Well, India and China have their own products. It's hard for US companies to gain market share in Asia because people already use local products!

Last but not least, you don't have to make 2.5 billion people rich in order to become the number 1 Tech hub in the world. All you need is a tiny place like San Francisco bay area.

</comment></comment></comment><comment><USER40> High time for fully remote companies.

<comment><USER10> Is there a single company in the fortune 500 that is fully remote?

<comment><USER40> Don't know if wordpress is fortune 500 company. But it is 15th most visited website in the world in 2013 [https://hbr.org/2013/03/how-wordpress-thrives- with-a-1.html](https://hbr.org/2013/03/how-wordpress-thrives-with-a-1.html)

<comment><USER41> wordpress.com is owned by Automattic, which I don't believe publicly publishes their revenues (a requirement for a fortune ranking). To break the 500 a company needs over $5 billion in annual revenue, Automattic's total valuation in its last round was only $1.16 billion, so they're not even playing in the same ballpark.

</comment></comment></comment></comment><comment><USER42> As if this administration cares about the economy.

Trump is scared. He projects fear. He doesn't want to live amidst diversity. He only supports people who agree with him (e.g. Milo). He figures fights will cause us all to run to our safe spaces and believe that the world is black and white.

The world isn't b&w, it's colorful.

<comment><USER43> Well, you're certainly painting a very black and white picture here.

<comment><USER42> Trump is a proud American, as am I. I don't disagree with him on everything, and I imagine everyone could find some overlap if they looked hard enough.

Unity is not the image he's projecting. He seeks revenge on anyone who crosses him [1]. In politics, every day someone will challenge your views or perhaps vote against you and "screw you".

> In speeches and public talks, Trump has repeatedly expressed his fondness > for retribution. In 2011, he addressed the National Achievers Congress in > Sydney, Australia, to explain how he had achieved his success. He noted > there were a couple of lessons not taught in business school that successful > people must know. At the top of the list was this piece of advice: "Get even > with people. If they screw you, screw them back 10 times as hard. I really > believe it."

[1] [http://motherjones.com/politics/2016/10/donald-trump- obsesse...](http://motherjones.com/politics/2016/10/donald-trump-obsessed- with-revenge)

</comment></comment></comment><comment><USER44> America's tech dominance is at least partly due to the ability to offer stock options without the employees having to pay tax until they vest isn't it? Other countries mostly make you pay the tad on the value of the option when you receive it don't they?

<comment><USER45> In Israel, form 102 is exactly this exemption. You pay stock-market tax (25%) and not income tax (up to 25%) and you only pay the tax after you convert the options to stocks. (So, when you vest or as late as you'd like if you don't leave the company).

</comment></comment><comment><USER46> I don't have a subscription to WSJ. Could someone provide any other link with the same news?

<comment><USER47> Try the "web" link under the subscription title. That may get you around the paywall (though recently it's been inconsistent with the WSJ).

<comment> mark-r Even opening the article through Google (via the "web" link) in a Chrome Incognito window refuses to get through the paywall. I think I'm done with WSJ.

</comment></comment></comment><comment><USER48> Dear policy makers and sections of HN, please maintain this unfavorable attitude towards immigrant tech workers for at least 4-8 years. Once this (unpleasant) feeling gets under our skin we will start departing in hordes and take that American Dream appeal with us.

(Probably a very bad analogy) a product is only as good as its fan base. We are fan of American Dream that's why we are okay with lining outside in the rain for 5-10 years. May be not for long.

<comment><USER24> >we will start departing in hordes and take that American Dream appeal with us.

And where will you go? I can't think of very many nations which are remotely competitive with the US as a place for tech work. Either their infrastructure is terrible, the culture and government too corrupt, their government too oppressive, the quality of life and standard of living too poor, the ability to immigrate too difficult, or the cost of doing business too high. Various places have tried copying Silicon Valley for quite a while now, without that much success.

You could try going to China, but good luck learning Mandarin and have fun putting up with massive pollution and the Great Firewall that hampers any kind of IT work. You could go to Switzerland, but good luck affording it, plus the place is just too small anyway (the country's whole population is less than just the Bay Area). You could go to El Salvador but have fun dealing with gang crime and the world's highest murder rate. The only place I can think of that might actually become serious competition is Canada.

<comment><USER48> India for East Indians, but not right away. It'll take continuous backlash against tech immigrant for a period of 4-8 years. Then you are going to witness new Silicon Valleys growing up organically in those places.

Remember not much can be expected when everything is going smooth. That's why so many failed Silicon Valley projects.

Think 10 years, not right away.

<comment><USER49> And how will you combat the corruption?

<comment><USER48> Slow organic development under stressful foreign environment. Corruption is everywhere, it just takes different forms.

<comment><USER49> > Corruption is everywhere, it just takes different forms.

In India, it takes a form that apparently disrupts startups.

What do you mean "under stressful foreign environment"?

<comment><USER48> > What do you mean "under stressful foreign environment"? That's the whole > premise of my argument. If backlash against immigrant tech worker continues > for an extended period of time, think 5-10 years not 5-10 months. You can > expect exactly what I have stated.

It's not pleasant to come thousands of miles away from home, leaving family and friends behind, paying proper taxes, being a responsible community member, and doing as best as we can. Only to read all these and live thru uncertainty.

Nope, Thank You.

I'd really hope these backlash would continue for a long period of time.

<comment><USER49> Maybe, but the native environment would have to be as prosperous.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER50> Nah. It's the deal flow, the aquisitions that drives silicon valley and America's tech dominance.

If Alibaba started acquiring American startups left and right we just might see a seismic shift.

</comment><comment><USER51> I'd like to see the numbers on the salaries of H1B employee's vs U.S. employees. My hunch is that there will be a large discrepancy.

</comment><comment><USER52> Tech leaders need to take some time to think about their role in bringing all this about.

Truth is, we've all known there were serious problems with the H1B visa for some time. It was clearly conceived and sold to the US public (and congress) as a program designed to bring highly skilled workers to the US who would supplement and enhance, not replace and undermine, the existing workforce.

Unfortunately, that's not what happened. Yes, it continued to be used properly some of the time, but abuses of this program were hardly rare and unusual aberrations. We ended up in repeated situations where companies where not just replacing US citizens with H1B workers, but were arm twisting the US workers into training their replacements. Stop and think about this, for a moment. This is a program designed to bring workers who have skills that you can't find among the existing workforce. If the existing workforce must train its replacement, doesn't that demonstrate that the existing workers do have these skills, and their replacements don't?

Did you not see these workers testify in front of congress, after Disney, and Edison, and even UC San Francisco did this? Some of them actually broke down. One of the few who spoke up said he was able to do so because he had no dependents and had given up on working in tech, and felt that because he could speak out, he had to.

And in all of this, we got what I felt were pretty sanctimonious essays from people like Zuckerberg, who were, as far as I can tell, really lobbying for corporate control over the US immigration system. Facebook wasn't arguing for greater freedom to immigrate, they were lobbying for the power to decide who is and isn't allowed to immigrate to the US, and the circumstances under which they are allowed to remain.

And in all of this, Trump saw an opportunity. He slammed the H1B (then he flip flopped a bit, then slammed it again). Many of the displaced Disney workers publicly supported Trump.

Now, tech leaders are terribly upset, and are taking a principled stand against Trump's actions. In many ways, I do agree with them, but I don't enjoy it. I don't enjoy being on the same side of an issue with Zuckerberg or Brin, at this point. Certainly not after Brin's involvement in the insidious wage- fixing scheme (ugh, did you see those emails?)

There's reason so many Americans were so enraged. I don't at all agree with their choice of president, but why now? Why did it take a Trump administration to get tech leaders, along with their supporters in congress like Zoe Lofgen, to start seriously criticizing this very corrupt program?

Tech leaders: It's time to take some inventory here, folks. As you oppose this new administration, think about what role you might have played in utterly alienating the US public. And be clear, we do need to welcome top talent from around the globe. By supporting a self-serving and corrupt program, and implying that those who opposed you were "anti-immigrant" (when in fact many of us just opposed corporate control over the immigration system, and couldn't support a program that give employers this kind of power over immigrant's lives), you played right into the hands of people who started to see this "anti-immigrant" card as nothing more than a cynical, corporate ploy.

Things are really bad now, and tech leaders, in my opinion, had a great deal to do with it. I think Zuck's and Brin's speeches against Trump are about as helpful as Madonna's, at this point.

</comment><comment><USER53> Good! I am not living in America. (:

</comment><comment><USER35> Americas "tech dominance" threatens the breadbasket.

The coastal areas, mostly certain cities, have become "international" and any worker from a rural area who wants to earn a living wage doing a technical job (e.g. STEM) now not only has to compete with other Americans, but everyone in the world.

What exactly do the elites expect people in the breadbasket to do? If America is an international country then we're going to see wealth distribution change. The coastal tech cities may accumulate all the money and have an average wage of $100,000, some of the highest wages in the world, but the inverse will happen to the rest of America. If you aren't in a tech city near the coast you're going to be on the lowest rung, not in America, but internationally. Think about the poorest communities in the world, and as the poor of America merge and become the international poor, we'll see incomes fall to well below poverty levels. Some of the lowest wages in the world.

Look at China, they already have a similar situation where all their wealth is accumulated in their big international cities.

Let China become the world international tech center. Their "breadbasket" is already use to being poor.

The thing about these tech centers is that they are international, it doesn't matter where they are.

As long as the rural areas get a vote and as long as the coastal areas continue to concentrate all wealth in smaller and smaller areas, the more we will see people like Trump get elected. Corporate tech-elitists living on the coast are in a huge cultural bubble. All of our news and media come from these areas too btw.

What I think would really help America (and the world by proxy) is if for every immigrant a tech company imports, they must hire two rural American workers from a community that's average income is less than the national median.

<comment><USER54> This "rural communities don't need tech" narrative is tiring and false.

"Tech" is more than Google. How many engineers do you think John Deere hires? How many scientists does Monsanto have on staff? How many lines of code go into the average modern factory?

If I had a dime for every time I talk to a farmer/laborer who plants fields full of GM crops and/or harvests those fields with impressive machinery, and then insists that "tech" is a useless industry. Or CNC mechanics who insist "tech" is a fad. Talk about cognitive dissonance.

Rural america needs tech more than ever before. They'll learn to leverage tech built in coastal cities, or they'll become so irrelevant that not even high tariffs can save them.

 _> is if for every immigrant a tech company imports, they must hire two rural American workers from a community that's average income is less than the national median._

I came from rural America. So do lots of software engineers in coastal and especially non-coastal cities. There's nothing stopping those people from getting an education and joining a big tech company. Literally. Nothing.

Seriously. Even in poor rural communities without high school CS courses, you can sit your ass down at a computer, learn to code, then fill out college applications.

The one exception is maybe lack of access to higher education. And the GOP is an odd choice if that's your primary problem...

<comment><USER55> > There's nothing stopping those people from getting an education and joining > a big tech company.

"There's nothing stopping somebody from the ghetto from getting an education and joining a big tech company".

In both cases, sadly there is. And I think what the OP is suggesting ("for every immigrant a tech company imports, they must hire two rural American workers") is a step towards remedying this.

<comment><USER54> _> In both cases, sadly there is_

If you read further, I state the obvious: _" The one exception is maybe lack of access to higher education. And the GOP is an odd choice if that's your primary problem..."_

 _> And I think what the OP is suggesting ("for every immigrant a tech company imports, they must hire two rural American workers") is a step towards remedying this_

Huh?

Google et al. _already do this_. If you're a competent programmer, you can find a tech job. Tech companies don't discriminate against rural hires...

Is your suggestion that Google should hire a bunch of _completely untrained and totally unqualified_ rural folk as software engineers, purely because they're from a rural part of the country, and train them on sight?

Wouldn't improving K12 STEM education and making college more accessible make _a lot_ more sense? Google isn't a school, and education isn't their core competency.

It's one thing to say "we should be more supportive of STEM education and make college more accessible".

It's completely another to insist that Google over-look college educated immigrants because some rural Americans weren't given the opportunity to attend an IIT.

</comment></comment></comment></comment><comment><USER56> US Tech: We need the brightest blah blah ...

US Gov: Fine, Big Co with $15b in yearly profits, if he's so bright then pay him at least $150K a year. If he's not worth that much then he's not that special.

</comment><comment><USER57> _Tech salaries are high and unemployment is low._ End of story. There is no problem that needs solving. So sad to see so much ignorance over immigration. Ignorance because tech immigration is not hurting the economy, and Muslim immigration isn't killing people.</comment>


Ask HN: How to secure a crypto exchange? - <AUTHOR> <comment><USER2> [https://en.m.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_e...](https://en.m.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)

??

<comment><USER3> I guess the author wants to secure an online cryptocurrency exchange website (like MtGox or Coincheck), not to exchange cryptographic keys.

I think the correct answer is that you shouldn't write your own exchange unless you know a lot about security or you hire someone that knows a lot about security. (For reference: I don't know.) An online exchange is a giant multimillions piñata, just waiting to be hacked.</comment></comment>


Submetrics – Search for your favorite show - <AUTHOR> http://www.submetrics.org/ <comment><USER2> I don't understand;

1) What's the 'top words' which appears when you search for a site? I just get a bunch of profanities (for basically any show, even those which are PG-13). Is this meant to be the top words found in the show's subtitles (it's not) or the most searched for words (in which case why am I'm being shown that). Further searches seem to show some work (e.g. Homeland, or Game of thrones)

2) Expanding the 'top words' gives (apparently) a top 100, except many words appear more than once - in my 'top words' for 'The Simpsons', 'MOM' appears 7 times.

3) What are the 'Top topics'? Again, examining The Simpsons, the top topics are, 'Case/investigation', 'noisey', and 'spooky'.

4) Browser 'back' doesn't work from top topics or top words

Edit: Having read the 'about' I'm feeling _far_ less critical, given this is part of a Big Data course project. Initially, I wondered if the prevalence of profanities in speech (generally) are causing a weird biasing effect (i.e. a single word being said repeatedly) but given there shouldn't be any 'fuck's in The Simpsons/Modern Family/Friends my guess is something may be off on the back-end?

<comment><USER3> Right! I saw profanity in the big bang theory too but unless it was bleeped out I don't believe that has ever happened

<comment><USER4> Same with Adventure Time

<comment><USER5> and Frasier...?

</comment></comment></comment></comment><comment><USER6> Based on the headline, I expected the site to return the name of a TV series based on a search of subtitles. i.e., "shootin some bball outside of the school"

For me, "find" implies search, while "discover" implies recommendation.

</comment><comment><USER7> For example: Breaking bad ([http://www.submetrics.org/#/show/1069](http://www.submetrics.org/#/show/1069)) Top topics: Party, Gossip, Show...

I don't understand how it can help me pick similar shows

Edit: I played a little more for some TV shows it gives better results. For sure it is interesting but require a lot more work to be actually useful as TV Shows recommendation tool.

<comment><USER8> 96.58% Similar to Veronica Mars. Not sure if top words is a good metric here.

</comment></comment><comment><USER9> Tried it with Buffy, and the similar shows look completely unrelated. Also, I'm not sure where it's getting "king" and "dynasty" as keywords.

<comment><USER10> I'm wondering that too about Farscape.

Also the lack of frell makes me question it :P

</comment></comment><comment><USER11> Top word for all shows these days seems to be 'fuck' oO

</comment><comment><USER12> Yeah, its a nice idea but doesn't seem to work at the moment, give it a few months and someone may well implement it properly.

As an aside does anyone recognise what they've used for the data vis on [http://www.submetrics.org/#/about](http://www.submetrics.org/#/about) ?

<comment><USER13> It looks quite similar to a graph visualization method I once used in Gephi [1].

[1] [https://gephi.github.io/images/screenshots/preview4.png](https://gephi.github.io/images/screenshots/preview4.png)

<comment><USER14> Yep, it's Gephi !

</comment></comment></comment><comment><USER15> Game of Thrones has top words of "rome", "england", and "france"? The only reason I can think of is if it's also including audio commentary.

<comment><USER8> Interesting. Definately seems like there is something wrong with the data.

</comment></comment><comment><USER16> This seems like a nice idea but all the results seem to be pretty much indistinguishable from noise. Nearly every show I tried returns the same genres and keywords (and I think it's reasonable to say that Frasier is NOT a crime show in space.)

If this is just counting the frequency of individual words, perhaps that's too simplistic an approach.

</comment><comment><USER17> Doing some ad-hoc searches, it appears that recommendations tend to favor shows with the same writer rather than shows in the same genre. I'm guessing this is because writers tend to have a similar writing style across genres.

For example, search for a Joss Whedon show and get Joss Whedon shows recommended.

</comment><comment><USER18> Top words for Seinfeld are things you can't say on TV. Data broken?

<comment><USER19> Based on poking around the site, it looks like there's something seriously wrong with the data.

</comment></comment><comment><USER20> That's really cool, is the raw data available for people to play with? I've been looking for something interesting for some textual analysis experiments.

</comment><comment><USER21> Basically every show I tried just gave me a word cloud with a big "Fuck" in the middle.

</comment><comment><USER22> Already knowing where "Enhance!" going to lead me! :)

</comment><comment><USER23> Subtitle analysis is a really cool idea!</comment>


Ask HN: Why don't FAANG have a larger remote work force? - <AUTHOR> Am I misinformed that most FAANG engineers do not work remotely?<p>Is that a bad sign for remote work? If the top companies do not do it, why should the smaller companies? <comment><USER2> 1\. Remote work forces are still scary to a lot of people, especially if they've spent their whole careers thinking it's impossible to manage.

2\. Some percentage of workers enjoy being on-site, especially at a nice office. Large companies have so many qualified job applicants that they can select only people who want to work on-site. In my experience, it's very hard -- though still possible -- to staff a growing startup with only local workers (unless you make some compromises).

3\. Large companies have already built large buildings or signed long leases for office space. It's a lot more expensive for them to transition to remote work.

> _If the top companies do not do it, why should the smaller companies?_

It seems like you're suggesting small companies should imitate large companies. This doesn't make sense for several reasons.

Large companies with massive reserves of cash can tolerate lots of overhead (office space being one of them).

Further, large companies have fewer employees operating in silos. While a startup might have a single marketing person, a single front-end person, etc., a large company will have many teams for each function.

When you have more decisions being made across larger teams, you have more decisions made by committee, and in-person meetings seem like the most efficient way to move forward.

</comment><comment><USER3> To properly support remote work you need it to be fair for everyone, which means you need to offer it to everyone and optimise for it. Huge organisations face larger barriers to this because of the amount of change it would require to how they communicate and interact. But all those organisations will have pockets of remote workers even if not officially endorsed.

</comment><comment><USER4> The more desirable the employer, the less demands employees are able to make to work there. If Google has a candidate that wants to work from home, and a candidate that will stay on-site for sixteen hours including eating three square meals a day fifty feet from their desk, Google has an obvious choice.

A startup, meanwhile, may need to offer appealing options like remote work to gain similar levels of talent.

</comment><comment><USER5> For small companies remote work allows for a much larger candidate pool. Compared to looking only at local hires it allows you to offer competitive compensation, and hire people with more experience. To have an effective team with remote work requires organizational level changes compared to a local only team</comment>


Twitter's Plan To Appeal To The Masses: Demolish The "Town Square" - <AUTHOR> http://readwrite.com/2014/05/02/twiter-town-square-companion-evolution#awesm=~oDi3SCBNghIsBL

<comment><USER2> Strange that this article was written in 2014, because Twitter already is a platform of the masses and it already is something which people use while watching TV. Seems like a prediction of the past to me. Using a hashtag isn't some amazingly complicated thing which only technical people know how to do.

<comment><USER3> Yeah everybody uses them now, even for comic effect. They've become a meta- message inside the message, and their actual search-identifier function has quickly become moot.</comment></comment>


Fast Multiplication with Slow Additions - loup-vaillant http://loup-vaillant.fr/tutorials/fast-scalarmult <comment><AUTHOR> There should some warning note right at the top, given the topic is presented mainly for cryptographic purposes.

There is a huge body of quite diverse side channel attacks against all of these "fast" techniques for scalar multiplication, and the article is too weakly making references to pitfalls for each approach and the importance of constant time logic (also, no mention of masking techniques! Though those are routinely overlooked by way too many speed-obsessed practitioners).

<comment> loup-vaillant I confess I'm quite tired of having to litter every article that might be about cryptography with the standard warnings. I might as well warn readers not to use this knowledge at all, because they shouldn't implement their own crypto to begin with (even though I did).

This is an advanced topic. If the reader is in a position to use such knowledge, I felt I could safely assume they would know when it is safe not to be constant time. (For instance, signature verification doesn't process secrets, and can be variable time.)

> _also, no mention of masking techniques!_

Out of scope. Those are hidden behind magical constant time routines.

<comment><AUTHOR> >> also, no mention of masking techniques!

> Out of scope. Those are hidden behind magical constant time routines.

How is that? Side-channel resistance is largely a matter of reducing the Signal-to-Noise ratio for traces an attacker can leverage to extract secrets. A constant-time logic reduces the Signal; a masking logic increases the noises. The two are largely independent and at times at odds. For instance, recent fast curves (like DJB's) are good because they can be easily implemented in constant time in software (as far as we know) but they are actually much harder to mask (in software or hardware).

<comment> loup-vaillant Oh, I thought you were talking about the bit twiddling required to implement constant time lookup and constant time branching.

> _Side-channel resistance is largely a matter of reducing the Signal-to-Noise > ratio for traces an attacker can leverage to extract secrets._

Who cares about resistance when you can have immunity? Constant time crypto leaks _zero_ signal through timings, who needs any noise to mask that utter absence of signal?

Unless maybe you were thinking about other side channels, such as energy consumption, or electromagnetic emissions? I'd agree those are worth pursuing for smart cards and dongles, but on regular computers (from palmtops to servers), the threat is mostly academic.

</comment></comment></comment></comment><comment><USER2> The "non-adjacent form" optimization appears to just be radix-8 booth recoding, no?

<comment> loup-vaillant _< looks up what the heck is "booth recoding"…>_

I think they're different. In booth recoding, the windows are _fixed_ , and non adjacent form is a special case of _sliding_ windows (2-bit wide). I don't think booth recoding does minimise the number of non-zero digits. That said, it does seem to produce similar results in some cases:

        01111111 100  (binary)
        10000000-100  (NAF)

        -- radix-4 Booth recoding
        01111111100
                 000 -> 00
               110   -> 0-1
             111     -> 00
           111       -> 00
         111         -> 00
       001           -> 01
       010000000-100  (same as NAF)

But I think it's just a coincidence, here.

<comment><USER3> semi-OT: big thumbs up for your Poly1305 "tutorial", clearest explanation of it I've seen yet.</comment></comment></comment>


Google's June 2nd Outage: Their Status Page Does Not Equal Reality - <AUTHOR> https://medium.com/lightstephq/googles-june-2nd-outage-their-status-page-reality-lightstep-cda5c3849b82 <comment><USER2> the customers spending billions on the big cloud providers are entitled to much more rigorous and detailed reporting (incl historical data) for end-user- visible performance... I would much rather see the graphs in the article than a green check box (especially when things aren't actually very "green").</comment>