Erik Naggum's XML Rant from 2002: Disturbingly prescient - <AUTHOR> http://www.schnada.de/grapt/eriknaggum-xmlrant.html <comment><USER3> The title of this post should be "how not to disagree with others in a public forum". The tone is alienating and disrespectful, so much so that the valid criticisms of XML as a technology are completely buried by the arrogance and off-topic political and social commentary: "the current American presidency and XML have much in common", "XML is the drug-addicted gang member who had committed his first murder before he had sex, which was rape."

If we want computing to be a friendly and welcoming field and contribute to the betterment of humanity, we can't tolerate people who behave like this in public.

<comment><AUTHOR> > _If we want computing to be a friendly and welcoming field and contribute to > the betterment of humanity, we can't tolerate people who behave like this in > public._

Other people can't tolerate overly-polite, overly-cautious, overly-friendly, overly-political-aware, overly-PC tone.

It makes us droozy and keeps the discussion in a level better suited for enterprise brainstorming meetings and committees. Everybody looses.

Tech and science leaders where very frequently passionate and prone to rant. Just think of Torvalds reactions to (what he thinks are) stupid ideas in the kernel list -- even if he's wrong, it helps keep everybody vigilant and agitated for his contributions.

> _If we want computing to be a friendly and welcoming field and contribute to > the betterment of humanity, we can't tolerate people who behave like this in > public._

The aim is not to make computing a "friendly and welcoming field" (that would be the boy scouts), it's to make it an effective, productive and interesting to work in field.

If you start judging contributions to a field by politeness of "behavior in public" then you're doing the field a disfavor.

The biggest scientist in some field could as well be a huge jerkoff -- for example, Djikstra was known for his passionate rants and snarky tone against everything he considered a bad practice.

<comment><USER3> You're setting up a false dichotomy. There is a middle ground between behaving like an asshole and too much diplomacy. Do you really think respectful disagreement is the same as being "overly-PC"? Torvalds is a little harsh sometimes, but it's nothing compared to the disgusting rudeness of this rant.

<comment><USER4> Yes it's a great point. Too often we try and reduce things to black and white when nearly everything is a shade of gray.

<comment><USER5> I've never understood that "shades of gray" line. How about some color?

Edit: this seems to need clarifying. I understand what the line _means_. What I don't understand is why people use it so much when it repeats the error it purports to correct. In nearly every case where "reality is either 0 or 1" is wrong, "reality is some coefficient of a single variable between 0 and 1" is just as wrong. That is a poor way to champion the richness of reality. What's interesting is how it corresponds to the emotional crimpedness of a world in which everything is gray.

<comment><USER6> It's a gradient, not a binary.

Adding colors to the metaphor adds words with no increase of understanding.

<comment><USER5> Understanding is not disjoint from emotion.

<comment><USER7> What is this, arguing for the sake of arguing? He answered your question perfectly. Adding color for "emotions" makes absolutely no sense in this context.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I can't believe the discussion about this article has devolved into a discussion about whether a particular writing style, which has been a witty and entertaining vehicle for argument for thousands of years, should be expunged from the programming community as if it were a pathology. A preference for civility is one thing, but an inability to distinguish between different pieces of writing according to their intent, effect, and value is another thing entirely. Naggum's target here is XML (a juggernaut) and the entire community behind it (another juggernaut,) not an individual poster. He isn't bullying anyone or singling anyone out personally. He also writes with a great deal of experience and insight into this particular problem, and his tone is very well-suited to communicate his experience and insight.

The programming community has its share, and maybe more than its share, of people who hurt the community more than help it because of how they treat other people, and also people who could learn to participate in a much more constructive way. The matter can't be oversimplified, though. There are no simple rules that can be applied. Sure, you could describe the post as aggressive, intolerant, and irritable. Most writing that can be described as aggressive, intolerant, and irritable could be improved by making it less so. Then again, most things described as "pungent" -- rotting garbage, my feet -- could be improved by making them less so, but not Camembert.

<comment><USER9> What you find "witty", I find boring. What is so interesting about dozens of ad hominem attacks? They're not even clever insults... just long adverbs (staggeringly) attached to playground names (idiot) and misogynistic, nonsensical analogies (rape).

<comment><USER8> Well, that's one way of reacting to it. Many people who found Christopher Hitchens delightfully witty decided he was no longer so witty when he became a neocon and started writing things they disagreed with. That only means they never appreciated him as a writer, but only as a cheerleader for their particular side.

 _misogynistic, nonsensical analogies (rape)_

Being offended at horrible things treated lightly in a piece like this is the surest sign one has misplaced one's sense of humor.

</comment></comment></comment><comment><USER10> The heart of his suggestions:

Remove the syntactic mess that is attributes. (You will then find that you do not need them at all.) Enclose the /element/ in matching delimiters, not the tag. These simple things makes people think differently about how they use the language. Contrary to the foolish notion that syntax is immaterial, people optimize the way they express themselves, and so express themselves differently with different syntaxes. Next, introduce macros that look exactly like elements, but that are expanded in place between the reader and the "object model". Then, remove the obnoxious character entities and escape special characters with a single character, like \, and name other entities with letters following the same character. If you need a rich set of publishing symbols, discover Unicode. Finally, introduce a language for micro- parsers than can take more convenient syntaxes for commonly used elements with complex structure and make them /return/ element structures more suitable for processing on the receiving end, and which would also make validation something useful. The overly simple regular expression look-alike was a good idea when processing was expensive and made all decisions at the start-tag, but with a DOM and less stream-like processing, a much better language should be specified that could also do serious computation before validating a document -- so that once again processing could become cheaper because of the "markup", not more expensive because of it. But the one thing I would change the most from a markup language suitable for marking up the incidental instruction to a type-setter to the data representation language suitable for the "market" that XML wants, is to go for a binary representation.

<comment><USER11> He basically suggest turning XML into s-expressions. Eg.

Hello, world

Turns into something like:

       <p "Hello," <a <href "http://example.com">"world">>

Not an obvious win as far as I can tell, wouldn't like to fix an ummatched bracket in a document ending in >>>> rather than e.g. </form>
. But your mileage may vary.

His other ideas have more or less been implemented, with varying success. XML- Schemas have been introduced which is more powerful that DTD's. Some schema languages can indeed do complex computations for better or worse.

The macro-expansion approach is how XSL-formatting worked, and it turned out it was not as powerful or elegant as the CSS approach. It made sense when coming from a publishing background, but didn't predict dynamic interactive web pages.

<comment><USER12> "Not an obvious win as far as I can tell, wouldn't like to fix an ummatched bracket in a document ending in >>>> rather than e.g. </form>
. But your mileage may vary."

HTML would then be an acronym for Lots of Irritating Single Angle Brackets.

</comment></comment></comment><comment><USER13> Heh, Naggum. Why do we still talk about him? Did he build awesome things? Did he change the world? Affect so many lives by being a great teacher?

One thing he did do was hate a lot. You can find him throwing hate at whatever it is you hate, no problem. Perl, C++, XML... whatever (except Lisp), he probably wrote an article flaming it. So when you want to find a well-written article lambasting whatever it is you hate, you can look to Naggum.

And while he wrote those thousands of USENET posts, the rest of us were off building great things with the stuff he hated on. He was barely on my radar until he died, and looking through archives I realized he actually responded to me a couple times. I guess I was too busy making stuff to pay much attention.

<comment><USER14> I can't really be bothered to cite references since I'm typing this on an iPad and I doubt you'd care but I do like to point out for others than he has build great things and worked on influential projects (take SGML for example).

I can only dream to attain 10% of the technical prowess he achieved in his short life.

</comment></comment><comment><USER15> It's certainly a poor way to argue when you set yourself up so that unless the opposing side agrees with you on politics, morality, the U.S. government, education, human development, and oh yeah, portable document formats, they're going to be forced to disagree with you.

<comment><USER16> Only if the opposing side is an idiot who can't separate beliefs about separate things from one another. Naggum himself has a great rant on such "one-bit" people: [http://www.xach.com/naggum/articles/3225130472400367@naggum....](http://email@example.com)

But then, if you're knowingly arguing with idiots, it's typically done more for some weird sense of fun than for the purpose of actually trying to change their mind. Even an argument between supposedly smart people (even those aware of Bayes' Theorem) doesn't result in mind changes all that often. Actually changing someone else's mind about something they already have a relatively firm belief on is at least as hard as changing your own mind.

<comment><USER17> So it's only a poor way to argue if the opposing side is a normal human, is what you're saying.

If you think you can fully separate beliefs about separate things from another, there's a whole slew of psychology research that says you're deluded.

<comment><USER18> This has piqued my interest. What specific research are you referring to?

</comment></comment></comment></comment><comment><USER19> It is usual to correlate technology preferences with entrepriseyness - <USER2> developers, in general, prefer java or c#, whereas startuppy devs, in general, prefer ruby or python, and nobody likes php except the millions of devs who use it.

Is there a similar correlation between technology preferences and political leaning, or religion? If I said I was Christian, or opposed abortion, or approved of gun ownership or of invading Iraq, would you assume, bayesianly, that I probably prefer XML to JSON?

Does a preference for lisp, for example, indicate a predisposition to atheism? What kinds of political or religious leanings might be inferred from one's position on the RDBMS-NoSQL spectrum?

<comment><USER20> Programming is a way of modeling reality and a preference might reflect a bit of your own mind. Then again, people aren't always consistent, so it might not necessarily correlate strongly. Nice remark though!

</comment></comment><comment><USER21> Yes, it's a rant. Why? Because probably the author is tired of explaining the same things over and over to the XML defenders

Really

JSON is better (and XML is crap) it's ridiculous, it's obvious, it's clear cut, and when people "don't get it" you start resorting to irony

Like this:

> Enclose the /element/ in matching delimiters, not the tag

Let's compare them

<blah>foo</blah>

To json

blah: foo

1 - size (json wins)

2 - matching. Here's an exercise, try splitting json with sed, and then try with XML. Sed is a good exercise, because it's limited to simple grammars, so it kind of gives an idea how much trouble it is to parse each one

3 - redundancy: what would mean if the line was <blah>foo</lala> This is a mistake, right? But I can assume the tag name is blah and the data is foo. This is a glaring redundancy in grammar, bound to cause trouble.

Not to mention working with json data (like python) is _natural_ compared to work with XML data.

<comment><USER11> Now try to apply this to the real world. The most popular and widely used SGML-derived format _by far_ is (X)HTML. Show me e.g. how a paragraph with a few embedded links is improved by translating to JSON.

It is not. Of course _some_ kinds of data are indeed expressed simpler with JSON.

Another real world example is RSS. More data-y that HTML but still may contain mixed content. Would it be better if it had been JSON from the beginning? The answer is not clear cut.

So maybe JSON is not _always_ the right answer. Maybe it depends on what kind of data you want to express. But then it suddely is not a debate with a "XML- defenders" which "dont get it". Then it is a discussion about which tool is approprite in a given situation rather than a war between tribes. And how do you boost you ego and sense of superiority with a boring debate about tools?

<comment><USER21> Popular != Better

"Show me e.g. how a paragraph with a few embedded links is improved by translating to JSON."

Even though HTML and XML are related, something like a web page is so ingrained that would be difficult to change

And JSON was never a markup language

The criticism of XML goes much more towards using it as a 'Key/Value' serialization format.

But you could imagine something like that (commas and colons would have to be replaced in a 'JSON' markup language)

{p: Read it on {href:news.ycombinator.com, a:Hacker News}}

Size gains, parsing speed gains.

RSS is not as clear cut, really, it's not a complicated structure, so it could be YAML for example

"So maybe JSON is not always the right answer. Maybe it depends on what kind of data you want to express"

XML has attributes, which I'm not against (unlike the article) and it has a more natural nesting of information. But for the majority of data, yes, JSON is better

This is about coder productivity (which is _increased_ with JSON it's not even funny), either in Python/Java (even with the whole swiss army knife of XML libs they have)/C# or others.

Speed is also a issue. Encoding and decoding XML is slower, even with C speedups (example: Python lxml). And this is relevant for transformation of data or even sending it to the user.

</comment></comment></comment><comment><USER22> And that's how we seem to have transitioned to JSON, at least for some information storage and transition :) Remember when it was all the rage to use XML for RPC? and even in AJAX?

<comment><USER23> JSON and XML have two totally different application domains. For some XML is better for some JSON. People who think JSON is better never had a problem with changing data schemas, different parties and common interface.

In short XML is a lot more powerful than simple JSON. JSON is a subset of XML with a different syntax.

<comment><USER24> How is XML any more immune to schema changes?

<comment><USER25> Is not immune, but you have an explicit contract in the form of a XML Schema Definition (XSD).

<comment><USER26> XSD is not part of XML, it's a totally separate specification. JSON likewise has schema specifications like JSON Schema.

Also, Protocol Buffers are _by far_ better a better schema language than XSD.

</comment></comment></comment></comment></comment><comment><USER27> My worst practical problem with XML is that it is kryptonite to doing conflict resolution in version control systems. I've eased my pain with one such document by translating the document elements to a directory full of files, each of which has the name of its unique identifier attribute and the contents of which looks something like

      === attributes ===
      a=b
      === contained elements ===
      id_1234
      id_4567
      === associated text ===
      This is the text associated
      with this element

Those one-line tags which are syntactically distinct from attributes or identifiers serve as anchors for the diff program to "do the right thing". For this application, I can omit whitespace text elements, and there is at most one #text element per containing element, so I can conflate them. Were there more than one, I could generate id's for the contained text elements.

Are there better ways of doing this? Tools?

</comment><comment><USER26> Eh, as XML rants go I prefer this one from Graydon Hoare (lead designer of Mozilla's Rust): <http://www.rdb.com/demo/XML/>

It colorfully beats around the bush a bit, but its primary points are:

1\. any lossless coding of bits can be cajoled into representing anything, the important question is whether it's a _convenient_ coding.

2\. the fact that so many XML formats have sub-languages embedded into strings means that nearly all XML processing requires another, higher level of software to fully parse the document. (it also is evidence that XML wasn't that convenient of an encoding to begin with).

3\. just because you can write a document of XML expressing some logical idea doesn't mean that the idea is implementable. For example, the "Spacecraft Markup Language" (which is a real thing, or was).

</comment><comment><USER28> Unfortunately, I lose interest in this rant amongst all the inane references to other things in the world.

Kind of ironic that an argument in favor of less verbosity couldn't be more verbose itself.

<comment><USER29> I feel the same way, except it has been quite a while since I've read a good usenet-style rant, so I indulged.

The correctness of an idea vs the expression of the idea are not related. You can be "right" and horrible at explaining or "wrong" and very persuasive and eloquent.

The comparisons with comments from Linus are good examples. He can be very abrasive and condescending, but is usually right!

<comment><USER3> The author's technical criticisms are indeed valid. But Linus Torvalds doesn't compare things to murderous, rapist gang members, or offer offensive social commentary on the culture of an entire nation, and I suspect he wouldn't find your comparison of him to this author very flattering.

</comment></comment></comment><comment><USER30> Naggu _m_ 's the name.

</comment><comment><USER31> This part felt particularly applicable to the intellectual (and emotional) environment of young companies and the products they bring forth:

 _Many an idea or concept not only looks, but /is/ good in its infancy, yet turns destructive later in life. Scaling and maturation are not the obvious processes they appear to be because they take so much time that the accumulated effort is easy to overlook. To be successful, they must also be very carefully guided by people who can envision the end result, but that makes it appear to many as if it merely "happens"._

The idea and the people that carry it out are intertwined because neither are static or even have any "essential" material whatsoever.

Worth reading just to have that thought articulated so well (once again).

</comment><comment><USER32> This is kind of off-topic, but whenever I see a spate of, "Is RSS dead/dying?" posts, I wish they would focus more of the historical context around the W3C and XML standards and developer/browser maker reaction to that to split from the W3C to focus of HTML/CSS/JS

Are there any other end-user facing specs/apps built on XML beside beside RSS?

It always seemed redundant to me that the most popular RSS reader is Google's which is re-wrapping stripped down XML feeds back into a another HTML/CSS/Javascript presentation layer.

Maybe JSON readers would be more popular to implement.

<comment><USER33> I don't know what do you mean by "end-user facing specs/apps".

But if enterprise apps where the content is formatted in XML count, then there are thousands (I'm working on OpenERP, for example, which uses XML both to define views and to transmit content to the client).

Then there's SVG. And the Office formats, both MS' and LibreOffice's. And obviously XHTML. And XMPP, which drives Google Talk and clients to FB Chat.

Just look at the list: <https://en.wikipedia.org/wiki/List_of_XML_markup_languages>

</comment></comment><comment><USER34> > (I note in passing that the stereotypical American male longs for much > larger than natural female breasts, presumably to maintain the proportion to > his own size from his infancy, which has caused the stereotypical American > female to feel a need for breasts that will give the next generation a > demand for even more disproportionally large breasts.)

Is this how Norwegians see Americans?!

<comment><USER35> Given that breastfeeding has been declining in America over the past couple generations, it reflects a misunderstanding of American sexual pathology, if, in fact, it was meant as more than a throwaway comment.

</comment></comment><comment><USER36> > ...go for a binary representation. ... The question of what we humans need > to read and write no longer has any bearing on what the computers need to > work with.

We seem to be heading away from binary.

I think the bigger problem with XML is the XML stack. Many of the ideas are insightful, powerful, useful - but the embodiments are tedious (e.g. XML Schema, XSLT). OTOH, a problem is an opportunity

</comment><comment><USER37> At first the hyperbole was somewhat amusing. But as he criticizes xml for being too heavy for what it is frequently used for, so are his diversions into politics and human behaviour. They end up becoming an obstruction to the meat of the text.

</comment><comment><USER38> 15 years ago I had Erik in my killfile. He's dead and I still can't escape him.

</comment><comment><USER39> Wiki on Mr. Naggum for those curious about the man behind the rant: <http://en.m.wikipedia.org/wiki/Erik_Naggum#_>

</comment><comment><USER40> This really shouldn't be news. The complaint seems to be that XML is no good for anything that isn't document/text heavy (i.e. doesn't fit in with the intent of SGML).

If you weren't already thinking this in 2002 then you probably weren't paying attention.

</comment><comment><USER41> I noticed the reference to binary representations with some enthusiasm. For a variety of reasons, I find myself using HDF5 in instances where I might have chosen XML (or JSON for that matter) a few years ago.

</comment><comment><USER42> "If GML was an infant, SGML is the bright youngster far exceeds expectations and made its parents too proud, but XML is the drug-addicted gang member who had committed his first murder before he had sex, which was rape."

I think he could have just left it there.

</comment><comment><USER43> R.I.P.

</comment><comment><AUTHOR> Especially the part around 2/3rds of the text, about how to improve XML.

Also loved the jokes and metaphors. We need such people in tech discussions, most community leaders have turned teletubbies-nice to each other, to the detriment not only of a good flame-fight, but of the actual dismissal of brain dead ideas.

Instead of violently ridiculing proponents of bad ideas/software/etc to shame and (hopefully) sepuku, we tip-toe around them, or at best, just make light fun of them, like in the "Mongo is webscale" video.

<comment><USER11> I think rants like these makes us more stupid. It turns a discussion about pros and cons of various technologies into pissing matches. His colorful metaphors does not actually illuminate the issue at hand, but only serves to set up "studid" versus "smart" and appeals to emotion by hoping to convince the reader to the side of the smart ones, without actually arguing the specific points of the thechnology. (E.g. why is backslash _obviously_ better than ampersand-semicolon as character escapes? If he have a valid argument for this he certainly does't feel the need to disclose the reason for the reader. He would rather make an elaborate infantilization analogy about breasts.)

I guess this kind of rant appeals to people who have a deep need to feel as part of small elite surrounded by a sea of stupidity, but doesn't have the capacity to understant how different tools may have various pros and cons in different specific situations.

<comment><AUTHOR> > _His colorful metaphors does not actually illuminate the issue at hand_

I think quite the opposite, he makes a very compelling case, and even gets into the details. Even in the part you mention, for example you missed some stuff that answers your question (without hand-holding):

= = = Then, remove the obnoxious character entities and escape special characters with _a single character_, like \, and _name other entities with letters following the same character_. If you need a rich set of publishing symbols, _discover Unicode_. = = =

 _> I guess this kind of rant appeals to people who have a deep need feel as part of small elite surrounded by a sea of stupidity, but doesn't have the capacity to understant how different tools have pros and cons in specific situations._

It's not about "different tools have pros and cons in specific situations", it's about how some tools have defects that make them bad for EVERY SINGLE situation. CORBA comes to mind as another example.

It's not that something XML-like cannot be good for certain situations.

It's rather that XML as-it-was-designed has several flaws that don't NEED to be there, and don't benefit ANY use case.

For example, goto has some use cases in C that it is good for. NULL terminated strings on the other hand are a bad idea, and have no place anywhere.

<comment><USER44>
      > he makes a very compelling case, and even gets into the details

He always made a compelling case, I would go so far as to say that he was almost always right. The problem with this style of communication is that it hardens people's positions, because the criticism of the position comes wrapped up with the implication that anyone who holds it must be an asshole. That makes it much more difficult for most people to approach the question from a purely technical perspective.

</comment></comment></comment></comment><comment><USER45> The parts of this that aren't about XML are stupid as hell.

<comment><USER46> While I generally dislike comments like this (and I wouldn't be surprised if it got downvoted on HN as lacking substance), this time, it fits. The "arguments" provided we're inane, providing no justification for the very-few _actual_ suggestions contained therein.

What is particularly sad is that I completely agree with his comments on XML, and I try to teach others about the dangers of not using XML intelligently, but I would _never_ refer to this author to back up my feelings.</comment></comment>


Why do we have blood types? - <AUTHOR> http://www.sciencealert.com/why-do-we-have-blood-types <comment><USER2> Blog-spam copy of the following which was discussed last month:

[https://mosaicscience.com/story/why-do-we-have-blood- types](https://mosaicscience.com/story/why-do-we-have-blood-types)

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


Follow up to Ask HN thread: Growing a side project - <AUTHOR> https://betterthansure.com/answer-hn-growing-a-side-project-30f17f6a10da <comment><USER2> which thread was it?

found it in the article:

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


CALC shows you how much you should be earning as (sub)contractor - <AUTHOR> https://calc.gsa.gov/?q=information%20security%20engineer%2C%20 <comment><AUTHOR> If you're a small shop or independent (especially female) contractor, strongly recommend using CALC to help set and justify your fee schedules. [https://calc.gsa.gov](https://calc.gsa.gov)

Even if you don't intend to be a gov't contractor/sub, it can be a handy reality check for folks just starting out.

credits: [https://twitter.com/marasawr/status/981913681524117504](https://twitter.com/marasawr/status/981913681524117504)

</comment><comment><USER2> Can anyone explain to me the catch here? Edit: Ah, fully burdened labor costs. Sounds about right then. Yeah, you run into these numbers while consulting.

</comment><comment><USER3> Wow! $120 an hour average for a Bachelor's degree sounds nuts to me (as someone completing a Bachelor's degree).

<comment><USER4> Those are the labor rates paid to the contracting firm. So that includes their overhead and profits.

<comment><USER5> So what would that leave one with? 60$?

</comment></comment></comment><comment><USER6> How would you convert this to private sector. On the one hand, government contracts go to the lowest bidder. On the other, government pays IT professionals 1.5 - 2x more.

What back-of-the-envelope factor would you use?

ref:[https://www.cio.com/article/2404419/government/fed-- governme...](https://www.cio.com/article/2404419/government/fed--government- pays-it-contractors-nearly-twice-as-much-as-its-own-it-workers.html)

<comment><USER2> ~1/3rd rate. I could be wildly off. I can't remember my sources. I just remember that figure for some reason.</comment></comment>


USS University - <AUTHOR> https://www.profgalloway.com/uss-university <comment><USER2> I stopped reading at the salary information for professors. Either Galloway is intentionally misleading or he's dangerously unable to represent facts.

 _> The average salary of a full professor (before benefits and admin support costs) is $104,820, though some make much more, and roughly 50% of full-time faculty have tenure._

He's conflating the full professor (the highest-ranking level for a professor) with full-time faculty. What's more, he ignores the fact that outside of R1 institutions, the average salary for a full professor is uniformly well below that (the chart where he got his data from is here: [https://www.insidehighered.com/news/2018/04/11/aaups- annual-...](https://www.insidehighered.com/news/2018/04/11/aaups-annual- report-faculty-compensation-takes-salary-compression-and-more)). After seeing that gross misrepresentation of higher ed salaries, I'm not predisposed to trust any of his other arguments.

</comment><comment><USER3> His worksheet: [https://docs.google.com/spreadsheets/d/1CUs3HrqstC2oV3CF3_di...](https://docs.google.com/spreadsheets/d/1CUs3HrqstC2oV3CF3_di4yW6Y4K_CIrUJNEEHCCKo7A/edit?usp=sharing)</comment>


Thresholds - <AUTHOR> http://alumnit.ca/~apenwarr/log/?m=200901#01

<comment><AUTHOR> Summary: " _some kinds of transitions are easier to predict: the ones that follow something like Moore's law. Here are a few of those upcoming transitions. I won't try to tell you when they'll come, but perhaps they'll give you some ideas. For context, I'll include a few that have already happened._ "

</comment><comment><AUTHOR> Threshold: _"Latency of an Internet-accessible server is as low as a LAN- connected one. (This will never happen, dooming various efforts that still depend on the assumption that it will.)_ "

But it could become close enough to not matter.</comment>


Steve Wozniak to the FCC: Keep the Internet Free - <AUTHOR> http://www.theatlantic.com/technology/archive/2010/12/an-open-letter-to-the-fcc-regarding-net-neutrality/68294/

<comment><AUTHOR> I don't agree with everything Woz argues, but the story about his dial-a-joke line makes it worth a read.

The core argument that I have in favor of net neutrality is that, at least in the US, the last mile of connectivity to one's home is provided via a government-mandated monopoly or duopoly. My local government granted Time Warner and Windstream (a regional phone company, formerly Alltel) exclusive rights to run wires down my street and to my house. In exchange for these rights, those companies agreed to rate approval and other restrictions. Now, they want to indirectly extract more money from people in my community by selling premium access to their homes. I am not sure why net neutrality is not seen as a local or state issue -- much like cable rates and the price of electricity.

Similar arguments can be made about the wireless carriers. The US government artificially limited competition in the wireless space by deciding how many different entities could own the spectrum in any particular geography. While I am more sympathetic to the wireless companies' arguments for traffic prioritization, the claim of absolute free enterprise is laughable.

I am a small-L libertarian. I don't think I should have any right to tell Apple what content it should or should not carry on iTunes, what products WalMart should stock on its shelves, or any number of other things that private enterprises operating largely without beneficial government mandates might care to do. But, to suggest that a government-enabled monopolist should be able to pick and choose the issues where it can pull out the Free Enterprise trump card is absurd.

<comment><USER2>
       I am not sure why net neutrality is not seen as a local or state issue

IANAL, but wouldn't this be an obvious application of the Interstate Commerce clause, as traffic is likely to be crossing state lines?</comment></comment>


It's cheaper to build multiple native applications than one responsive web app - <AUTHOR> https://hueniverse.com/2016/06/08/the-fucking-open-web/ <comment><USER3> I don't think that's remotely true if you keep the responsive web app simple. YNGNI and KISS and what not.

I've been doing this for over ten years. In that time I've seen large web applications built for under 4k; I've also seen massively overbuilt simple applications go for 50k+. It comes down to often how needlessly complex you make the stack.

If you stick with solid simple guaranteed tech instead of cutting edge you can knock a web app out relatively cheap and easy.

When it comes right down to it, 95% of web apps have two jobs. Present text to the user, take text from the user. Everything else is a nice to have. HTTP has been doing those two jobs amazingly well for decades. It's a solved problem, don't make it harder than it needs to be.

Lastly: Don't fight the browser. Design for the browser. Responsive is easy if you design for things to flow as the browser would have it. It's one of the biggest mistake I see so often. If a design requires you to fight the native behaviours of the browser, it's likely a bad design. Fight back against that junk, it just makes future work that much harder.

tl;dr Develop for the web of a couple years ago and not the web of today. It'll save you time and headaches.

<comment><USER4> I think the author is already addressing this:

 _Yes, you can build 2007 websites much better now. They will be consistent across platforms and perform great. But my 12 year olds don't want 2007 websites. They want 2016 apps._

<comment><USER5> 12 year olds don't have money, I would wait till people are at least 16 to care if they use my app...

<comment><USER6> The toy industry would like to disagree!

</comment></comment></comment></comment><comment><USER7> Seems like you're deferring one dragon for another.

Deliver the project got easier; "Control the customer" got significantly harder. You've now got someone's app store in the middle of your customer relationships and are exposed to approval drama, various forms of revenue squeeze, and other meddling from the platform owner. What happens if the folks running the platform decide to launch their own offering?

Speaking as another small developer, our solution to the cross-browser feature support is simple: anything that doesn't run on most modern browsers doesn't make the final design. If the customer doesn't bite on basic design, we don't expect a miraculous shift with the latest widgets.

<comment><USER8> Apps don't have to be downloaded from stores, thought that certainly does make things nice.

<comment><USER9> Apps stores are crippled excused for real package management. In the open world, you can import someone else's key and repository and install their packages. In Play/iOS/Windows you have a single provider. There's no bug tracker to add your packages and no way to add a stable and unstable channel..unless both apps are in the same store ...and every beta release then has to get approved.

It's maddening. I wrote a thing about it and other Android issues: [http://penguindreams.org/blog/android- fragmentation/](http://penguindreams.org/blog/android-fragmentation/)

<comment><USER10> iOS and Windows Phone devices may be limited to a single package provider, but Android devices are not. I've had more than one store on my Android phones and tablets for over five years now. And, yes, I'd love it if there were a standard way to include signing keys for additional stores so that installations were seamless, that's not a significant problem in practice.

<comment><USER11> ATM's at casinos and clubs can charge $5+ dollars for a withdrawal, but that doesn't make it a viable solution for even %10 of ATMs.

</comment></comment></comment></comment></comment><comment><USER12> I can speak with some knowledge of a not-insignificant B2C company -- not my current gig -- that went down this exact same route some years ago.

Swore off mobile web in favor of pushing people to the app, because app conversions were much higher.

A satellite office broke away from the fold and implemented a responsive mobile site, immediately increasing their bottom-line revenue by 30%... and that's before doing any sort of conversion optimization.

The main office followed suit shortly thereafter... with a new head of engineering.

Native apps are no easier or harder to build than web apps. Equivalent level of difficulty in my experience, with apps being slightly harder because end- to-end testing needs to be done almost completely manually, and because the release cycle is partially outside of your control.

But for most businesses, you really, really do not want to neglect the mobile web.

Yes, conversion for in-app users is broadly higher across the board. But that's not because conversions suddenly spike when people use an app. Rather, your most dedicated users -- the ones most likely to convert -- are the ones that will install an app.

For the rest of us, if it's "app or bust", we will pick "bust".

As a consumer, I deal on an annual basis with probably over a hundred different companies. I do not want an app for each of those companies. And if you force me to download an app from the get-go, I will go to your competition.

<comment><USER13> exactly, [http://www.recode.net/2016/6/8/11883518/app-boom-over- snapch...](http://www.recode.net/2016/6/8/11883518/app-boom-over-snapchat- uber)

Alternatives are webapp's or even building chat bots/apps on messenger platforms. This progressive mobile webapp example is impressive [http://www.flipkart.com/](http://www.flipkart.com/)

</comment></comment><comment><USER14> "You want mobile notifications? Sure, but not on mobile Safari."

You can do this with PhoneGap.

"Multiple line ellipsis? Sure, but only on webkit."

Okay, yeah, this sucks.

"Consistent rendering size across browsers? Just fuck off."

This is probably your fault.

"We fix a layout bug on Safari and break something on Edge."

This is probably your fault.

"We change font size on Chrome and now all you can see on Firefox is the letter F."

This is probably your fault.

"How about hiding the address bar or controlling swipes from the left edge of the screen? Don't be stupid."

Stop trying to make the browser not a browser. Users hate when you hijack expected behavior. (See: Imgur.)

"Oh, and don't get me started on all these new custom mobile keyboards you can use and how autocomplete can fuck with your input box events."

You can disable autocomplete. Did you mean predictive word suggestions?

TL;DR: "We tried to make a responsive web app act like a native app and it didn't work because _it doesn 't work_, and that makes me a grumpy goose."

<comment><USER15> Did we read the same article? What is this condescending bullshit. Nobody is arguing these things CAN'T be done, just that it's too much effort on the web, and the only web devs that know the ins and outs of every browser enough to make it work are unaffordable and unavailable.

<comment><USER16> This is also what I took from the article. Everything they're wanting to accomplish is certainly possible, but instead of just knowing the ins and outs of each platform, you have to know the ins and outs of each browser AND how each can affect the other browsers.

Beyond this, it is clear to me when an iOS-minded developer creates a web app that ends up on Android. Each have their own specific styles, and this gets lost with web apps.

<comment><USER17> Not to mention the effect of time. The Web is not a stable application environment, and you may get caught in limbo, where the old way to do something is technically deprecated, but only one browser implements the new scheme, and only in nightly builds and even then only if you launch with --please-segfault-hourly. But using the deprecated API means at some arbitrary point in the future your working code will stop working.

<comment><USER18> The Web rarely deprecates features. Browsers still have to display the Web of 1995.

<comment><USER17> How about the Web of 2012?

WebSockets changed wire formats multiple times before we settled on something. Last I checked, the API still isn't final, and changes in browser behavior forced a project I was on to abandon it for socket.io. Web Audio has been through at least one breaking rewrite since 2012, and still isn't finalized.

Sure, '<h1>' still gets me a big, bold heading (probably, subject to CSS), but playing a sound file without plugins is still bleeding edge, and subject to arbitrary breakage. But we've broken plugins (for the best, eventually), so the old solution to that problem no longer reliably works.

</comment></comment></comment></comment></comment></comment><comment><USER19> Even if this is true, I doubt it's a wise idea, given that the average US consumer downloads _zero_ apps per month:

[http://qz.com/253618/most-smartphone-users-download-zero- app...](http://qz.com/253618/most-smartphone-users-download-zero-apps-per- month/)

Unless you're in a very fortunate niche, you can't afford to not do the web. You can afford to not do apps.

</comment><comment><USER20> I don't like how the author mocks other people who make decisions based on money over ideals:

> That group, btw, has mostly sold out taking high paying jobs at Facebook and > Google, and have not heard from since

...but then later justifies his argument to forsake his ideals because "hey I've got a business to run":

> I don't need you to troll me on Twitter and tell me how I'm betraying the > web and the free fucking world. I am just trying to keep my startup going.

</comment><comment><USER21> I can totally relate to some of this.

If you take a look at Meeker's 2016 Internet trends report that came out last week, you will see that 3 apps dominate 80% of the usage on phones. I decided when I started my food side project a year back, that I was not going to do a native app.

I have been trying to make the front end look better, but I did not want to use very heavy frameworks, so I settled on using the SASS mixin library Bourbon.io along with the grid and a few others the company provides.

The css that is produces is very tight, and I can save on developer costs. I should say, save on finding another front end developer as the one I was using took some money and ran.

<comment><USER22> I don't really see how user time-share is relevant unless your goal is to start a social network/messaging system.

80% of user _time_ is spent in those 3 apps, that doesn't preclude very profitable apps from being developed. After all, people spend 16+ hours a day at home/work, but there are still plenty of reasons to open restaurants. Unless you profit directly from time-spent-in-app this doesn't seem like a consequential measurement.

See: Uber, pretty low on the charts for time-in-app but yet a massive business. Ditto Amazon, or GrubHub, or any number of other apps that deliver value to their users (and revenue to their owners) without long sessions.

<comment><USER21> There is going to be some reluctance to download a new app. If you can get tons of VC money, and you can pour it into marketing, you can get people to download your app.

But I think user adoption is just that much easier if all they have to do is open up your mobile web app in their phones browser. You could always build the app later after you have gotten the traction and growth.

</comment></comment></comment><comment><USER23> I think this is a bit of "grass is greener" syndrome.

I developed web apps for 14 years before building ios apps for 5 years.

The last couple of years I've worked on both native apps and responsive web sites.

Both can be pains in the a __e. But the pain points are different.

Both are moving rapidly. eg Ios: having to rejig xibs to storyboards was annoying.

Css: Supporting older versions of IE has been a pain.

I could go on at length but plenty of people have already done so.

<comment><USER20> Was just going to comment that "the grass is always greener..."

For example, here is something that was on the HN front page just a few weeks ago: [http://clean-swift.com/mobile-development-projects-fail/](http://clean- swift.com/mobile-development-projects-fail/)

</comment></comment><comment><USER24> There might be something to the headline but the content isn't delivering.

1\. You can't compare making an ios and android app to making an app for every bloody broweser, I mean you could just as easily built your webite to safari and chrome for mobile. You want a true cost comparision compare building an app for universal windows, and mac and linux. Of course if you reduce the scope of your app's access you are going to get reduced costs.

2\. Building a messaging app is probably the least appropriate and one of the hardest things to build with web technologie( after a game). Use the appropriate technology for your app.

3\. By your remarks on how costly mobile developers are, I'm guessing you've hired to inexpierenced web developrs. Get expierenced developers who know the limitations and best practices and you wont encounter so many issues.

</comment><comment><USER25> "One app for iOS, one for Android, and I got over 90% consumer coverage"

What's the consumer coverage for Mobile Chrome + Mobile Safari? Giving up on total cross-browser compatibility doesn't have to mean writing native apps.

<comment><USER26> The coverage is probably pretty high, but you're limited by each browsers respective feature set. There may be functionality that you can't ship due to limits on multiple browsers. Other issues arise if you factor in sites which needs to take into account all browsers; You'll end up bloating your JS/CSS to handle all of these conditions impacting mobile page size. It can be done, if the product is fairly simple, but problems arise as you increase your products complexity and feature set. Native apps have their own set of problems with distribution and the web has it's own set of problems with performance and hardware API access.

<comment><USER27> "Giving up on total cross-browser compatibility" seems like it would entirely avoid "sites which needs to take into account all browsers".

<comment><USER26> Potentially, although I think that there are cases when it's fine. For example when I lived in San Francisco, my LTE speeds were insanely fast so it wasn't as big of a deal. Now that I'm in Pittsburgh, the LTE speeds here aren't as good so mobile web isn't as good.

Also on a desktop or laptop where you've got a good Wi-Fi connection most websites are really good. That being said, I still things like Tweetbot, Flume, and Airmail over twitter.com, instagram.com or gmail.com.

</comment></comment></comment></comment><comment><USER28> When you multiply that 90% consumer coverage by the percentage of people who will install your app when you ask them to, it's going to knock down your 90% pretty considerably.

<comment><USER29> For users, I'm not sure how this is significantly worse than asking people to visit your mobile website. In my personal experience, people will search the app store for your mobile web application by default anyway.

If your product is an "app" in the functionality sense, then people are going to look for it in the "app store". Period. For user, it's actually a better experience than using Chrome/Safari.

<comment><USER30> I agree. Personally, I consciously avoid anything that smells of webapp and consider this to be a product of a lazy-ass company. Non-native applications pretty much universally suck, and it only shows that the quality/usefulness is not a goal.

</comment></comment></comment><comment><USER31> This article might have had some resonance a couple of years ago. Today it's just not the reality. Mobile apps are running into major engagement issues. App Stores are loosing their value prop and running towards web-like SaaS pricing models (Apple's hand was basically forced here).

On the other hand, mobile web browsers are way better than they ever have been. Desire to maximize web performance instead of allowing bloatware JS and ad cruft is at all-time high of industry awareness. Many mobile apps are "hybrids" anyway. Basecamp 3's new mobile apps are good examples of how you can create a pretty solid experience with a sensible mix of native and web- based functionality.

In other words, the open web is actually in better shape now technologically than several years ago. If only the big VC-backed SV startups would see that instead of chasing their tails trying to grab app users' ever decreasing attention.

</comment><comment><USER32> If you're a two person startup quit building on quicksand. Use stuff that works. Once you have some users you can start venturing towards the bleeding edge of what's possible.

</comment><comment><USER33> Meh, supporting a couple of iOS versions and a couple of Android versions for a native app along with device specific quirks is as much of a pain as supporting Firefox, Chrome, Safari and IE. Also, maintaining two code bases for native Android and iOS apps is a massive investment compared to a single web app code base.

<comment><USER34> Well, Native could also mean transitioning over to React Native, Cordova, Phone Gap, etc

</comment></comment><comment><USER35> Ehhhh, I really haven't had these issues with any of the meteor apps I've made. Even getting swiping and full page animation transitions has been relatively simple. My experience is anecdotal, but I actually left being android developer to do mobile web and I've found the experience to be far easier.

<comment><USER36> Similar experience here using Meteor + Ionic, exported with Cordova. I also feel like the skills I'm developing in web development are much more widely applicable than learning a particular mobile OS.

<comment><USER37> I often hear this. I tend tp agree but what exactly do you mean? That Javascript is used more widely?

<comment><USER38> Exactly this. I guess for people who have built their careers building mobile apps they couldn't care less about more rounded skills(in relation to web at least), its mostly full stack/back-end devs who know JS seem to state this. Not that there is anything wrong with that.

<comment><USER36> You hit the nail on the head -- I am a full-stack/back-end dev. Always prepared to learn the next thing (provided it's in javascript, hah).

</comment></comment></comment></comment></comment><comment><USER39> Comparing "responsive web apps" with native mobile apps? Really? What about cordova/phonegap/ionic?

Don't blame the _web_ because you made a poor decision picking your tech stack (or hiring your devs). Nowadays a single webdev can ship OSX, Android and Windows apps with frameworks like Ionic... in weeks.

Starters (there are hundreds) help a lot: [https://market.ionic.io/starters](https://market.ionic.io/starters)

<comment><USER40> Stuff like Cordova and Phonegap almost universally produce crappy apps. Doubly so if the person doesn't think they need to style the app for the individual platform, instead of just shipping the default (usually iOS) styling.

Shipping an app with one of those is almost universally saying, "I don't care about user experience, I just want to shovel something out the door as cheaply and quickly as possible."

<comment><USER39> > Stuff like Cordova and Phonegap almost universally produce crappy apps.

Again, don't blame the tool. Blame the bad usage of the tool. You're just saying: "Let's ban knives, assassins use them to do bad stuff!"

> [...] style the app for the individual platforms [...]

Ionic does this for you automatically. Surprise!

[http://ionicframework.com/docs/v2/components/](http://ionicframework.com/docs/v2/components/)

It's easier to complain about the tools than acknowledge that you might be wrong about how you or your devs use them (because of unfamiliarity).

Truth is many people are shipping stunning apps in no time thanks to web technologies.

<comment><USER40> No, I blame the tool because it's a poor tool. And I'm not using them wrong, because I'm not using them. I do native apps, because I care about my user's experience.

</comment></comment></comment></comment><comment><USER41> > Yes, you can build 2007 websites much better now. They will be consistent > across platforms and perform great.

There you have it. Using bleeding edge features will create a lot of problems. First you need to figure out what type of users you want to target, PC users with 24 inch monitors and keyboard? Or 12 year olds with iPads? But still, for your software to really work across as many units as possible, and continue to work for years, you have to look what existed 5-10 years ago, and only use those features that are still standard.

I have a mobile phone that no longer gets updates. It is HTML 5 compatible, so it should handle everything that is not bleeding edge, but still _many_ web pages, for example medium.com does not work!

I remember being a web developer ten years ago, it was your professional duty do make sure it was pixel perfect on existing GUI based browsers and even look good on the text based ones. I think web dev's today is too quick to jump on the latest and greatest.

If you take a look at the browser features that existed 5-10 years ago, it's way behind the native phone app experience! It seems browser vendors totally missed the mobile explosion, and only lately have begun to catch up! Considering how fast the web tech moves now though, the future for web dev looks bright. I think that in in 5-10 years, the mobile browser experience will be on pair or even ahead of native, at least considering dev experience and cross device/platform support.

</comment><comment><USER42> (note: I've met Eran a few times, he is very smart and I respect his opinion)

Note aside: this is one of those "it really depends" kind of situations. For many cases native apps are always going to be cheaper to build. For others the web is just much better. It seems like the problem Eran is describing is more of a labor shortage. It's really, really difficult to hire good web developers. I have no idea why this is.

<comment><USER43> _> It's really, really difficult to hire good web developers. I have no idea why this is._

The obvious answer is the one given in the article: Google, Facebook, etc. can afford to pay good web developers far more than a small business.

</comment></comment><comment><USER44> _One app for iOS, one for Android, and I got over 90% consumer coverage_

However with a huge friction point of requiring users to download and install an app.

<comment><USER29> I don't understand why people think this is a huge friction point. Installing apps is comfortable, familiar, and easy for people. By comparison, finding a mobile web application in the browser on a phone has significantly more friction.

<comment><USER45> A _lot_ of people in the real world don't want to install apps.

Also I disbelieve on how hard it is to find a mobile web application on a phone. Find it once, save a shortcut to a web page on your home screen, and now it is as easy to launch as an app. I actually find this easier to do than it is to install an app.

<comment><USER29> > A lot of people in the real world don't want to install apps.

A lot of just a specific subset of highly technical people? I don't think I've met anyone with an aversion to apps who also used a ton of mobile web apps.

> save a shortcut to a web page on your home screen

How many people did you lose at this point?

<comment><USER46> \- The study in the sibling reply shows 65% of users dont install any apps in a month. I would think technical people actually install more (for testing etc)!

\- Actually you don't lose anyone because browser history and address bar autocomplete are your friends. I dont think people care to save a shortcut, because they know they will be able to find it later.

<comment><USER29> I'm a technical user and I haven't installed an app in a month. I've probably gone a few months without apps. I've used a few mobile websites and zero mobile web apps.

I don't think it's fair to say that users who aren't installing any apps are actually going to mobile web apps instead. They're simply using what they already have. At some point I have all the apps I ever need for all the interactions I use my phone for.

> Actually you don't lose anyone because browser history and address bar > autocomplete are your friends.

On the desktop sure, you might have a point, but interacting with a mobile browser to find stuff that way is not a good use experience. You think browser history and autocomplete is a substitute for a home screen icon? I don't know how to respond to that.

</comment></comment></comment></comment></comment></comment><comment><USER47> Pro-tip: You can make your article sound like it's been written by a grown-up if you find/replace all instances of the word "fucking" and "fuck" with "".

<comment><USER48> People also just speak differently. You're allowed to curse on the internet, and as someone who lives in Queens, I honestly have trouble speaking without cursing. It feels kind of stilted and overly proper. Language is fluid and evolves.

<comment><USER49> But presumably you don't write in every "um", <cough>, stutter and mis-speak so why keep in the swear words rather than cutting them and increasing your readability and information density? You may have trouble speaking without cursing but you clearly manage to write without including the curse words.

</comment></comment></comment><comment><USER50> Sure, it may be cheaper to build an Android app and an iOS app than it is to build a responsive web app. I'll buy that.

But most customers want an Android app, an iOS app and a web site for desktop.

It's certainly cheaper to build that desktop webapp if you don't have to make it mobile-y, but is it cheaper to build an Android app, an iOS app and a desktop webapp than it is to build a responsive webapp?

</comment><comment><USER51> 'www' should stand for wild, wild, web. In many ways, the web is a technology frontier, with all the frustration and liberation that goes along with it.

I sympathize with the author. The problem is trying to tame the web, as opposed to embracing it for what it is.

<comment><USER52> It would appear that "what it is" is "not good enough", and that the sort of functionality and control over behaviour an layout is so hard to achieve on the browser that it's just not possible for any reasonably complex app and for a sensible price.

</comment></comment><comment><USER53> Seriously... there should be a framework that takes care of all that for you.

We built this framework. And it took us four YEARS. Ok, it also does a ton more stuff than just make the app work across devices.

But, the web rocks. Seriously. PhoneGap lets you basically stuff the web app into a fullscreen shell and go to town. And the best part is that you gey to control updates, _totally legally_ without Apple holding you up. Have a front- end bug? Fix it for everyone tomorrow! Have a new feature you want to roll out to only 5% of your users? YOU CAN! And then A/B test it. Whoa. Like how would you A/B test with the app store? Yeah, that.

Also... when invitation links are clicked, where do you think the mobile user goes?

TO THE WEB.

And so... you need a web experience anyway, that does more than say "Please download our app. Here is a nice picture and description so you can clutter your phone now."

And finally... web push notifications? Yes, this is one of the TWO BIGGEST THINGS MISSING in iOS Safari. (The other is access to the address book, with permission of course.)

But I think that's about to change at WWDC. Android Chrome has Web Push!

</comment><comment><USER54> "native app developers seems to think $50K is the smaller amount you should bill for a native app these day"

Ummm, yeah, I would say $50k would cover a small native app using Parse or similar or an extremely light backend. Even a medium size native app is going to run $100-150k. That's the price of software development if it's happening in the US.

</comment><comment><USER55> One thing we tend to forget as developers is that in any industrial process, there needs to be technical limitations enforcing requirements before requirements enforce technical specifications. We tend to be too easy because everything seems achievable with software systems.

A project should start by considering political things such as: is it smart to have this particular application hosted in a marketplace. Right after that, the chief engineer should be consulted to know the technical approach (platform, stack, etc...) that should be used, and the technical limitations that the requirements should observe to allow the development effort to be successful and efficient.

The more self-imposed technical constraints are observed, the more successful and easy the development will be - and passed a certain point, the more difficult it becomes to sell the product or service.

Applying this reasoning to the article, to me the problem is the very thing they have decided to develop.

</comment><comment><USER56> Responsive web apps are difficult to build, however settling for native Android and iOS is not sufficient for comparison since he's leaving out the desktop (so he should probably include Windows and OSX for some level of parity for what a responsive web app can do).

The real underlying problem is the state of the mobile web browser, which neither Apple nor Google have much incentive to improve due to their revenue generating app stores. That's not to say that there wouldn't still be some major differences between native apps and mobile web (especially in the discovery / delivery department), but if you had better feature parity between these platforms I think rants like this guys would be fewer and farther between.

tl;dr: He picked the wrong technology platform for his product, therefore since it didn't work for his use case, it must be fundamentally broken.

</comment><comment><USER57> Mobile Chrome + Mobile Safari would be a great way to cover enough bases to make a good responsive web app reach a huge audience. The core problem is that Mobile Safari is really quite frustrating in a lot of ways.

As a simple example, I had a bug with some of the dialogs and menu popups I was using not rendering in Mobile Safari. It turns out that if you have a div that is a child (in the DOM) of a div that has overflow: hidden, that child will not be rendered outside of the clipping box of the parent, _even if_ the child div is position: absolute and at a higher z-index than the parent. This works differently in chrome.

There are plenty of workarounds available, but the basic strategy of creating a position: relative context and having a position: absolute floating menu / dialog that's rendered near the button that creates it won't work if your menu bar has overflow: hidden on it. But then you have to make sure you've got your menubar set up well so that it doesn't become super-tall in narrow screens, because you specified overflow: visible. Or you have to put your floating divs elsewhere in the DOM tree and specify their position as fixed and manually calculate where to put them using javascript.

It's things like this that frustrate me the most in working with safari - I'm constantly wrestling with a rendering stack that doesn't seem to do what I want (it was only in recent versions that I could stop setting flex-basis: 0.01px instead of flex-basis: auto (on safari) like I do everywhere else on divs that had only text children that I wanted to make expand but also become multiline text instead of pushing everything way out to the right. And don't get me started on safari's support for indexeddb, let alone the other neat features that chrome is supporting to make mobile just plain better.

I'm at the point now where I'd literally be willing to tell my users: "install chrome for iOS" if it were actually chrome, instead of supporting safari. But instead, I deal with the sort of resonance back-and-forthing when I fix a safari layout bug that introduces oddities in chrome's renders.

</comment><comment><USER58> >The web is the future. The web will always be the future. But that's the problem. I need to ship products now.

It's like tomorrow is always tomorrow -- it is never today. One thing that bothers me about the web dev community is the insistence that technology has a will of it's own. As if the web will just eventually win no matter what. I consider myself an advocate for the Web but it _needs_ to be good or better than the alternatives.

So, joke aside, it doesn't follow from the rant that the web is the future. It follows that there is a lot of work that needs to happen before you can say it might be part of the future.

<comment><USER59> I don't like the dramatic at all.

It allways has been the case, that if you used the most bleeding-edge features, you will bleed getting it to work everywhere. Very painful indeed, but I won't suspect, that this is going to change in the future, with so many people and companys involved.

So if you need to ship products now, you have to use, what's stable enough, if you want to target everyone.

</comment></comment><comment><USER60> The core of his argument really boils down to: I have to do it this way because my audience is 12 year olds and this is what they want. A good lesson in knowing your customer I guess. But I don't think the conclusion is useful for most people.

Another thing that stood out to me: "a closed ecosystem will always deliver higher quality in any given moment." Which is so absolute it's ridiculously easily disproved, even while being true at certain points.

</comment><comment><USER61> I used publicly whine quite a lot in favor of open web standards. When the specs were simpler, this made more sense, but as they grew more and more complex I felt overwhelmed with the chore of developing cross-browser apps. The investment of time required just didn't make sense anymore, and I felt like the only way to serve the web was to develop simple content-focused pages, and leave any complex functionality to native apps.

</comment><comment><USER62> "Do I miss IE6? As a CEO, actually yes." Seriously? Article should just have started with this, then I wouldn't have had to read the rest.

</comment><comment><USER63> The web's view layer, html and css, has the wrong granularity for building precise ui. Html's controls are too high level for pixel perfect manipulation, and too low level for easy assembly into rich ui. CSS meanwhile tries to get you to make general rules that interact to produce a precise rendering, which you never quite achieve because there are always unintended side effects of the rules. No native view api works like this, and for good reason. Since these technologies are almost entirely but not quite unsuitable for building a native-like view layer, people build abstractions around them to approximate the view layer api any native ui gives you. But then the problem becomes one of synchronizing the facade view to the real view, hence ten thousand templating and layout frameworks, all while continually dealing with the leaky nature of the abstraction.

I guess what i'm saying is that i believe in the principles of the web, but i think html and css are terrible technologies that do a disservice to those principles.

<comment><USER64> > Html's controls are too high level for pixel perfect manipulation, and too > low level for easy assembly into rich ui.

HTML+CSS isn't the only abstraction available, though. If you want a lower- level abstraction, you can use canvas. If you want a higher-level abstraction, you have your choice of composable view component systems (e.g. React).

</comment></comment><comment><USER65> Problem is no one wants to download your native app.

</comment><comment><USER66> Agree with everything except with the numbers. Users won't install your app that much so it goes to a balance. It depends of course on the application itself but, since you're struggling so hard to go 'web', I presume it might be a mobile version of a website. I visit a lot of websites each day but do I install everything those websites suggest? No!

</comment><comment><USER67> I'd say it again: break compatibility and make an open, preparsed/compiled/binary HTML format. You'll get several order of magnitude speed increase and reduced memory consumption in browsers (parsing text is expensive). Something a little similar to microsoft .CHM file format.

So instead of having a competition in browsers, you'll have competition is the HTML parsers that developers will use.

No more messy W3C messy standard which is VERY hard and ambiguous to parse for any browser.

I've repeated that rant so often, I might start making a simple example of what I'm talking about. We just MUST abandon the text only approach. It allowed the internet to thrive without microsoft's attempt to make money with it. But today browsers are so ubiquitous, all that there is to do is enable browsers to just render binary HTML, which would just be a tree of rectangles and styles, so really simple. I think.

<comment><USER68> Aren't the big bottlenecks things like waiting for large resources (images) to download and javascript processing? The parsing of HTML, as far as I'm aware, has a tiny relative impact.

<comment><USER69> > javascript processing?

Actually Javascript engines are extremely fast, the UI in a web app isn't because web engines have to deal with a complex repaint model. Resources can be loaded asynchronously, so it's not really a bottleneck. On the other hand repaints can absolutely be a serious bottleneck in webpage.

Native UI use a much much more simple model, which makes repaints less expensive and allow a better FPS rate.

That's why webpages shouldn't try to look like native apps on mobile.

</comment></comment></comment><comment><USER70> VERY relevant article: [https://govinsider.asia/smart-gov/why-britain-banned- mobile-...](https://govinsider.asia/smart-gov/why-britain-banned-mobile-apps/)

Ben Terrett was former head of design at the UK Government Digital Service and he wholehearted disagrees.

<comment><USER59> It's refreshing to hear so much competence from a part of a government ...

But about the disagreement: government-apps don't need to be bleeding-edge, like the one from the article. They just have to work without glamour. So 2007 works fine for them ...

</comment></comment><comment><USER71> The author of the article ignores user experience: it is much nicer to use a web app than install yet another app. Personally I don't like installing web apps, even if they don't ask for a lot of permissions. Also re: notifications: I think most users don't like to be interupted by notifications.

<comment><USER40> User experience is generally much better in native apps than in websites, though. Native apps match the look and feel of the native platform, with all of the network and performance benefits that entails. Native apps can integrate with the platform to a degree that web apps just can't.

</comment></comment><comment><USER72> How about a real world example.

tl;dr The Hybrid app took longer to ship (+ 20%), and was more expensive (+ 525%)

We were able to participate in a unique experiment: \- Develop a native app for iOS and Android at the same time a separate team was developing the exact same app as Hybrid (Cordova/React).

The app had 20 screens and used modern UX (onboarding, profiles, hamburger menus, alerts, GPS, content rich screens (text/images/video) with lists/details talking to a backend REST API with local/offline/sync'd storage.

Native = 8 man/weeks

\- 1 iOS dev for 4 weeks \- 1 Android dev for 4 weeks

Hybrid = 50 man/weeks

\- 5 Hybrid devs 10 weeks

You can argue that the 5 devs had overhead in communication and project management, but we observed that was not a major contributing factor.

The above was for app development (not the server). Hybrid app required the same amount of QA as the Native app.

</comment><comment><USER73> I built this app with web tech. It was sweaty, and I many times wished that I had gone native. But now that it's done it is something native could never be :) [http://www.oneviewcalendar.com](http://www.oneviewcalendar.com)

</comment><comment><USER74> >But it pisses me off every time I see a Twitter thread about how native apps are destroying the free world.

I can't understand this sentiment the author claims to see. Web apps are generally going to be less free than native apps. A native app doesn't have to be open and a web app doesn't have to be open, but a web app is definitely going to require that you connect to the host, will probably keep all your data stored away from your grasp on its servers, and may change its functionality and terms of service at any time. Native apps can share many or all of these traits but at least there's a chance you can control a copy of the software. The web is a terrible software platform for users.

<comment><USER75> I freaking love the web as an app platform. Now I don't have to wait for Google Maps for Linux, or Gmail for Linux, or whatever. That world sucked.

<comment><USER74> Google Maps is magical, but it isn't magical when you can't view uncached tiles or search for things when your connection is offline. A downloadable map application that you could purchase and view and search entirely offline would be even more magical.

<comment><USER76> Seeing as how Open Street Map's complete dataset is 40 GB compressed (and that probably doesn't have all the businesses, addresses, keywords, etc. of Google Maps), there's a pretty good reason why you can't search it offline. Not to mention, why would Google give away all their data on every install.

But, you are partially in luck. Google Maps now allows you to download up to 120,000 sq. km. [https://support.google.com/maps/answer/6291838?hl=en](https://support.google.com/maps/answer/6291838?hl=en)

</comment></comment></comment></comment><comment><USER77> > How many of our web evangelist are using an Apple laptop, the most closed > ecosystem around?

He's got a point here. I gave up my MBPs for a Win 10/Linux notebook, and I've come across some opensource and commercial projects I hadn't noticed only worked on OS X and Windows (MAX/MSP). Sometimes Linux is supported, but as a third, less-supported option (Mathematica 10.4).

Maybe it's because I made the change that I am focused on this now, but every talk I watch has the Apple logo.

I've noticed some older coders with cred are rocking Lenovos and 3 to 5 year old laptops. I used keep a laptop for 4 or more years, but now I am guilty of 'upgrading' every 2 to 3 years.

</comment><comment><USER78> If you miss Ted Dziuba's writing at Unvoc you will thoroughly enjoy this article

</comment><comment><USER79> I completely agree with the article. I joined a startup a few years ago and we went mostly native on Android and iOS with some simple screens as web views shared between them. Later on some clients wanted desktop and Windows Phone versions so we built a lesser featured version as a website to cater for any other devices (adding features as necessary). We started out as 3 software developers and a designer and are expanding. Native apps was a more cost effective way to deliver a good experience while the competition mostly developed web apps resulting in a lesser experience in my opinion.

</comment><comment><USER46> Good luck having the users download your app. I use everything from the browser, including gmail and twitter (both load faster and don't bother me with notifications). However I hate how they prompt me to download the native apps every fucking time (obligatory). I actually wonder, what are the action rates for those app install prompts?

If you don't play games there is barely a reason to download an app ever.

And really how bad or difficult is the mobile web? Use bootstrap and you have a pretty fine experience. I think we are focusing too much on slick experience instead of offering something useful.

</comment><comment><USER80> You should still STRONGLY PREFER Web Apps. The cost and headaches of a web app will be MUCH LOWER than native or even hybrid app development.

BUT, if you need a Native App, make a Native App and don't try to fake it on Web.

</comment><comment><USER81> Really excessive and sometimes completely out of the road: "Open standards are always going to be inferior to closed ones. How many of our web evangelist are using an Apple laptop, the most closed ecosystem around?" You have many open standards that are superior to closed ones, simply because it unleashes creativity of the community. Many techies use Apple because they build an amazing user experience, based on a closed but very large ecosystem - go to the App Store and you'll see most of the apps you need

</comment><comment><USER82> Is there some rule that startup CEOs have to say "fuck" a lot?

</comment><comment><USER83> I can sense the frustration, but I don't think it's the web's problem necessarily, and I've done work in both areas. Some ideas just don't work well in a web browser, because despite 20 years of attempts to force it down that path, a web browser isn't the same as something like Flash, let alone a native software stack. There are more stakeholders than just the app development people, and they don't always care about the same things you do.

</comment><comment><USER84> We do the same - each of our Android and iOS developers can complete a medium complexity app in 2 months flat without any issues - Web - not so much - <USER2> initial work is done much faster - it takes ages to tackle responsiveness issues even with Bootstrap. So although our web apps are responsive - we still provide native Android and iOS apps to clients. I don't see web apps replacing native apps anytime soon.

</comment><comment><USER85> A lot of the issues here are with mobile Safari. I agree it completely sucks just due to how behind Safari are with ES6. On the upside the work is complete to fix this in dev releases, so there's a very good chance that we're 3 months or so away from a large step change. I'm not planning on releasing anything in the next 3 months, so that timetable is okay for me, YMMV

<comment><USER34> I don't think that it's ES6 that's holding them back, there's Babel to fix that, I think it's all the browser vendors and the varying level of standards, different bugs and behaviors on every browser platform, plus there's features on Native platforms that are nearly impossible to replicate on the web. For instance `backdrop-filter`/iOS 7 like blurring wasn't possible on the web until Webkit implemented it, a year later only Safari has it and it's buggy in Chrome Canary (it blurs content under the box shadow). Another example ServiceWorkers, only in Firefox and Chrome, which cover most users on the Desktop, but on mobile you're screwed because half of your users use mobile Safari.

<comment><USER86> And for good reason. I don't want random websites burning my battery for their "oh so important" background tasks.

<comment><USER85> This seems like a misunderstanding of the tech. Service workers can really only fire up when they get a push notification, which you have to explicitly opt into, or when the page is running in the browser.

The processing allowed is tightly controlled, and even with permission the push notification can't do anything behind your back - it has to result in a visible notification which will alert you that there's something you want to disable.

</comment></comment></comment></comment><comment><USER87> I understand and empathize with the author's aggravation. But cheaper? Really?

So iOs and Android are more than 90% of the market. You are telling me that it is cheaper to build and maintain 2 separate apps and pass on the remaining part of the market than have one app that covers everything?

Android device support is supposed to be a nightmare - there are so many versions to contend with, each device manufacturer can customize things.

iOS is easier to support but fighting with Apple can be quite the ordeal.

Using the web means you bypass these other issues but have to contend with the ones cited in the article. It sounds like pick your poison.

I could conceive that after the initial cost of building 2 separate apps, for iOS and Android, that perhaps it is less aggravating and costly to maintain them, as opposed to dealing with the web. However how complicated is the UI for the web apps? Can't you keep it simple? Unless you can show numbers I cannot in my wildest dreams believe that building and maintain 1 web app is more than twice the cost of building and maintaining 2 separate native apps.

What are you building that requires building a 2016 Web app with every new feature? Maybe that is your problem.

<comment><USER88> > So iOs and Android are more than 90% of the market.

98.4% [http://www.gartner.com/newsroom/id/3215217](http://www.gartner.com/newsroom/id/3215217)

I think it's pretty reasonable to pass on the remaining 1.6%, especially as those probably aren't your target audience anyway.

<comment><USER87> The 90% was based on a previous post. I was too lazy to search for the total market share of iOS + Android.

</comment></comment></comment><comment><USER89> It might be true that it's a pain in the ass to write a responsive web app, but that doesn't mean it's not worth it. Users are unlikely to download a mobile app just because you say so.

Of course YMMV. If you have control over what the user does like some kind of internal enterprise app then go for it.

</comment><comment><USER90> I wonder if multiple native app is still cheaper than maintaining multiple different web builds.

Reminds me of this library I stumbled across.

[http://www.zebkit.com/](http://www.zebkit.com/)

People either respond with this is cool or your going against the web when I told them about it.

</comment><comment><USER91> Have a look at Delphi if you want cross platform native apps [https://www.embarcadero.com/products/delphi](https://www.embarcadero.com/products/delphi). It's very easy, $50K would take you a very long way.

</comment><comment><USER92> Key takeaway: "Open standards are always going to be inferior to closed ones." This is totally true, but as the author notes, open standards still have their place.

Also, I realize he's mad, but he really needs to expand his expletive vocabulary :)

</comment><comment><USER93> Since the article doesn't touch on specific I'm wondering where React Native falls regarding all this. I'm considering using it for our pending iOS and Android apps, seems like a no-brainer at this point versus true native.

<comment><USER34> Well React Native is one of many strategies they could use to build their app and later on back port their components to the web, should they resurrect it. I would agree with your point that it's a no brainer.

</comment></comment><comment><USER94> At age 38 I'm a little bit of an oldster for this industry, and I remember PCs in the 80s. I was a kid but that's when I learned to code and I distinctly remember what it was like.

It was a lot like today: loads of fragmentation and loads of vertical 'silos' with their own peculiar way of doing things.

Until the late 1980s you had a million little vertically integrated platforms: Apple II, TRS-80, Commodore 64, TI-99, IBM PC, etc. Even within manufacturers you had major incompatibilities, like Commodore VIC-20 vs. Commodore 64. Those were almost totally different machines.

Then the explosion of cheap IBM PC/AT clones changed all that and killed all the smaller players. There was a brief period from about 1988 until roughly 1999 when we had essentially one platform MS/Intel. That was MS-DOS and Windows, and the latter would usually run DOS apps. You also had one UI metaphor: the mouse and the keyboard and the screen. You had some hardware fragmentation but if you were targeting OS APIs and not trying to be bare metal it wasn't too hard to deal with. You mostly had one platform you could target and get 90%+ of the end-user market.

No more. Today if you want that 90th percentile of the user base you have to roll at least three _completely different_ UIs at a minimum. Either that or you go all-web, which as this author correctly points out is a major headache if you want something that's mobile friendly. We've had good luck with bootstrap+react but it is more work than targeting a _single_ native platform. (Not sure if I buy that many native platforms are more work... probably depends on the stack.)

On one hand all this diversity is interesting, but on the other hand if you just want to ship a damn product it's infuriating. It's also true on the backend: you have at least six Linux distributions, Docker, a million different 'stacks', clouds like Amazon building closed mainframe platforms like lambda, etc.

</comment><comment><USER95> Related: [http://thenewstack.io/the-new-stack-analysts-show-19-web- vs-...](http://thenewstack.io/the-new-stack-analysts-show-19-web-vs-mobile-vs- native-vs-open/)

</comment><comment><USER96> "Building" is very small part of software life cycle.

Is it also cheaper to bug fix, add features to, update apps when each native platform updates, hire developers who know details of each platform, etc.

<comment><USER97> I'll disagree and say its cheaper, faster, and less risk to bug fix and add features if you only maintain one codebase.

<comment><USER96> Well then you are agreeing with me, because that is what I said. One webapp cheaper, faster and less risk than multiple native apps.

</comment></comment></comment><comment><USER98> This person is angry. I can't imagine that if someone was ridiculing me on Twitter for destroying the free internet I'd care enough to start swearing up a storm.

</comment><comment><USER99> My current employer bought the app I work on from my previous employer. It embeds websites in webviews with JS-Objective-C/JS-Java bridges so they can make native calls. You get most if not all the benefits of native apps, native UI when you really want it, quicker iteration then the App Store, and can build in whatever stack you want. Of course I've had to follow an intermittent bug from the rails back end, to the angular front end, to the native java and up to the companies api servers before, so YMMV.

</comment><comment><USER100> No it's not. Get better designers - ones who understand responsive design, and developers who speak modern javascript.

<comment><USER101> I'd argue that "modern JavaScript" is a pretty huge part of the issue at hand.

</comment></comment><comment><USER102> I think it's interesting to know that native apps need to be responsive as well.

</comment><comment><USER103> Has he looked at mixed tech like React? Get web tech with native controls!

<comment><USER101> React is absolutely not going to make things easier for him.

</comment></comment><comment><USER104> The requirement logic of my benefactors necessitated no less...

</comment><comment><USER105> Well, I'll take all of that instead of the f __ __ _g c_ _p the native gives me from all the bright minds at g_ __ _e, a_ __e and m __ __ __t, anytime. The future is here.

</comment><comment><USER106> Makes sense and reminds me of 2006-2007 when this was a big topic in the US with Android and Windows mobile apps with Apple in the passenger seat

</comment><comment><USER107> You're clearly doing it wrong...

</comment><comment><USER108> But which is easier to maintain?

</comment><comment><USER109> you're wrong. dead wrong. about 2012 was the turning point in this game...

</comment><comment><USER110> What this article needs is more F-bombs. Otherwise it's ranty but makes some good points.

</comment><comment><USER111> I like the last line

</comment><comment><USER106> Makes sense

</comment><comment><USER112> I don't think "web apps" are as problematic today than they were several years ago. I don't say this because I hope web apps will be the future of app development, but because together with a few other devs we have built such an app at the company I work for. I think the result is a success but unfortunately I didn't have enough time to write about our experience yet. I hope I will have the time to so anytime soon.

Yes the development costs are super important, especially for small companies / startups. As important is the performance of your app(s) and also super important is the usability of such an app. If the development costs are much higher than building native apps besides your website, then you failed. If your app is slow and unresponsive then you failed. If your users dislike the app because it is not smooth like a native app and feels sluggish then you failed.

But does this mean that building mobile web apps is impossible, I don't think so. We did several things that helped us to keep the costs as low as possible and for sure much lower than if we would have written server, apps and client code using different languages / frameworks and libraries.

Our server side code, the code of our web apps as well as (obviously) our client (browser) code are written in javascript. We have used typescript to write all our code, this allowed us to use the latest ES6 features and gave us features like strict typing. The ES6 features we have most used are promises and classes. Typescript compiles our ES6 code into ES5 UMD modules. We choosed Visual Studio as IDE as it compiles typescript on the fly, which allowed as to quickly test new code almost in real time. We also used the node js tools for visual studio which allowed us to use the node js debugger from within our IDE. Setting breakpoints (typescript creates Javascript to TypeScript source maps), reading stack traces or watching variables was a piece of cake.

We have built an isomorphic website first. Our server side got built on top of express js (node js). All our modules and libraries are UMD modules, which means that more than 95% of the code we wrote is the same that we use on the server and in the client. We have built a server views renderer using Backbone and domino. Our collections and models are the same on the server and in the client, the only difference are the adapters we wrote to make ajax or server side requests. We use the same router on the server and in the client, which means the first page that gets served is always built on the server but the next pages are built in the client. This also means that crawlers can harvest our pages but for users we only retrieve the data needed to build the pages from server and do all other work in the client, which makes the pages load very quickly. We also had to write a cache library once, the only difference again are their adapters, the server adapter of our caching library saves objects into redis while our client adapter saves them in IndexedDB. A lot of things needed to built the pages get cached too, so each template, each translation and so on only needs to get fetched once by the client and can be reused until we publish an updated version of the item.

Our web apps are built using phonegap. Again 95% of the code of our apps is the same as the code that is being used by the client (browsers). Obviously we had to write clean and powerful code to ensure that our apps come as close as possible to the speed that people expect from a native app. We had to track every minor memory leak, especially those that occur when binding events to ensure that our apps use a minimum of memory. This was not only important for the web apps but also for the node js code. A memory leak is something you really don't want to have when writing a nodejs app ;).

I think what helped us to keep the costs low, was that we used the same language and therefore resulting code for the client, server and apps. But this did not only allow us to work quickly, it will also allow us to add new features quickly in the future. If we now write a new feature, as soon as we release it, it will be available to users that use our website as well as users that are using our Android / iOS apps either on their phone or tablet. The same is true for bugs, if we find a bug in the client and fix it, it will be fixed for all our platforms.

The other big advantage was that all the know-how we had but especially the one we acquired during the time we needed to build our project did benefit all our platforms. We didn't have to optimize our Java code for Android our Objective-C or Swift code for iOS and our PHP, Ruby or .Net code for the server. We just needed to optimize our Javascript code. We reduced the amount of platform / language specific problems to a minimum. It is really great when all your devs use (speak) the same language ;).

</comment><comment><USER113> No.

</comment><comment><USER114> Although a rant, this is also pretty substantive. We've replaced the baity title with a representative sentence from the article in the hope that commenters will follow suit.

<comment><USER115> The fact that you go to this effort is why I love HN.

<comment><USER116> If only we could get notifications for replies & a decent mobile app existed.

<comment><USER117> I just check a couple times a day... honestly, I'm usually too busy when I'm not checking HN to deal with a reply right at any given moment anyway. It's a forum.

<comment><USER118> I use hnnotify to tell me about replies and the Hacker News app on iOS by premii is pretty decent for read only access ( I mostly only post when I'm at a computer, I find that my responses make a little more sense that way :) )

<comment><USER117> Kind of wish HN would adapt Open* or similar for token access for posting... though that opens the door to a lot of potential issues (spam) I'm guessing they're trying to avoid... maybe requiring the web interface until you hit 1K karma or something.

<comment><USER119> Worrying about spam doesn't make much sense here, as the web interface is pure HTML forms, with no client-side checks. It isn't hard to automate the posting process.

</comment></comment></comment></comment></comment></comment></comment><comment><USER120> He forgot to mention how web frameworks come and go, and then you've got this legacy code nightmare. Also breaking upgrades and dependency hell. I'm a front end web developer, and yeah. If your building something simple, the web is the way to go, but his complaints are totally on spot.

<comment><USER121> Yup. I've got iOS native code written for iOS 2 still runs like a champ. My 2 year old angular 1 code is looking like a total rewrite.

</comment></comment><comment><USER122> Consider the following problem. If this very question is relevant, then your project is not.

Would it have mattered what they had picked for Google Search? A web site or an app? No. It would not have made any difference.

If what you are building is compelling to its users, they will want it badly. Otherwise, regardless of how well you package it, it will be a waste of time.

You see, for example, companies choose SAP, and then they buy the servers, desktops, and other hardware and software that is suitable for running in a SAP context.

Nobody cares whether the SAP client is a desktop GUI or a web client. It is immaterial. In other words, if that kind of things matter, your program doesn't.

</comment><comment><USER123> at first I rolled my eyes but by the end I was filled with sympathy and agreement! spot on!

</comment><comment><USER124> if web is future then future is now!

</comment><comment><USER125> 1 dev = all 5 device dev = 5 apps

1 dev 100k 1*5 500k in salaries

</comment><comment><USER126> I guess he hasn't heard of React Native...

<comment><USER127> React Native is no panacea. For example, Discord has found it unsuitable for Android so far. [1]

[https://discord.engineering/using-react-native-one-year- late...](https://discord.engineering/using-react-native-one-year- later-91fd5e949933#.a3kbj831w)

<comment><USER128> They tried it for Android at the "early stages". It may be better now ?

</comment></comment></comment><comment><USER129> What about developing a core codebase to build an app for different platforms (including the web)? There are framework out there that can help you do that. At least in C++ (this is the language I use the most).

</comment><comment><USER130> And if only there were solutions that made it easier to prototype and get your backend running faster. It could make it even cheaper to make native apps. end: self serving response :)

<comment><USER131> Hawking your own startup here doesn't make sense since the issues presented in the rant discuss user-facing product architecture.

<comment><USER130> It was done tongue and cheek. Sounds like that's frowned upon. Heard and heard.</comment></comment></comment>