Near-duplicate features of C++ (2017) - <AUTHOR> https://www.nayuki.io/page/near-duplicate-features-of-cplusplus <comment><USER2> Some of these absolutely makes sense and are justified; others...are actually sane to have in c++. For instance:

> int foo(void)/int foo()

In c, int foo() means that foo takes any number of args; c++ rightfully realised that that was stupid and removed that feature, which means int foo() can now be used to mean foo takes no args. Also, int foo(void) is illegal in c++.

Varargs in c are a complete pita to use, not to mention they literally do something different from function overloading/default args.

Constexpr is much nicer and safer to use than a macro.

Using malloc and calloc to make class instances means you can have unconstructed objects, which is a Bad Thing, and while introducing a new operator to do that is not necessarily the _best_ way to handle that, it's a perfectly valid way of doing so.

Libc random is just garbage, and libc++ random is actually decent.

setjmp/longjmp are more complicated to use than try/catch, and don't have all the same functionality.

<iostream> functions are type aware (although really they should have used fmt).

I'm no c++ apologist (it's an awful language), but this listicle is just...not great.

<comment><USER3> I think the problem is mostly in the tone of the opening paragraph and less in the list itself. By prefixing this with

"Don't automatically assume that C++'s situation is desirable, necessary, or inevitable."

It seems to be trying to frame this as C++ having bad duplication. But many of the things listed are not actually strict duplicates at all - like pointers vs. references, since references cannot be null (yeah yeah you can force it but 'int& foo = nullptr;' doesn't compile, either). Which if you then read the explanations at the bottom tend to cover in a fairly non-biased way.

<comment><USER4> > references cannot be null

        void test() {
          int* p = 0;
          int& r = *p;
        }

compiles without complaint.

<comment><USER5> I've gotten into arguments about this in the past.

As you've shown, references _can_ be null, but theyre not supposed to be and are assumed nearly universally to not be.

The argument comes down to when the undefined behavior occurs: is it at the deference to create the reference, or is it on the first memory access using the reference? The language pedants will say the former, but in practice, it's the latter.

In practice, you'll likely be able to invoke a member function on a null pointer or reference, as long as that member doesn't directly or indirectly access data members, or virtual functions of the type. Obligatory, I dont recommend doing this or relying upon this behavior, it's just behavior I've seen in my 2 decades of debugging C++.

<comment><USER3> It's mostly important in the context of codifying nullability. If a function returns a reference it's part of the contract that it doesn't return null. Similarly, if a parameter is a reference it's part of the contract that you can't pass it null.

It doesn't mean a method that takes or returns a pointer must allow null as a valid value, of course, Optional<> is better for that. But standards-enforced non-null is a very practically useful aspect of references that differ them from pointers.

</comment></comment></comment></comment></comment><comment><USER6> The tone of this is a bit silly. The main reason C++ was a success was due to the backward compatibility with C. That backward compatibility has (fairly obvious) downsides.

Objective-C has the same issue, for the same reasons.

</comment><comment><USER7> Well, one might grok C++ with the same perspective the author had, but I think C++, and especially C++17, make the language much safer and friendlier for beginners. C++17 for example is a big enough departure from pre C++11 days. If you stick to the bleeding edge, it doesn't look anything close to C at all.

Author has a point there, but maybe, just maybe, we won't see "new"s or "delete"s in most future codebases? (we have smart pointers now) Or non- intuitive macros (yay constexprs!)

I see these as stepping stones from C to where we are today without breaking everything at once or doing it with a whole other programming language.

<comment><USER8> > maybe, just maybe, we won't see "new"s or "delete"s in most future > codebases?

I haven't seen 'new' or 'delete' in the wild for a decade now. (Well, except for various legacy libraries or student code on Github.)

<comment><USER9> Me too. I've been writing pretty much only C++ for 20 years, and if I'd go back and count, I think I'd have maybe a dozen times where I used new/delete, none of those in the last 10 years. Like all languages that are actually used, there is much one can complain about in C++, but claiming that one needs a lot of manual memory management is done mostly by people who haven't written much if any C++.

<comment><USER10> Or people who care about heap fragmentation and cache misses.

<comment><USER9> Sure, but those people don't want GC either. Not to say that all languages that are not C++ are garbage collected, but the people who complain about manual memory mgmt are not the ones who care about those things.

</comment></comment></comment></comment></comment><comment><USER11> The author missed an opportunity on the heap allocation section. Now you aren't even supposed to do `new`, but rather std::shared_ptr<...> or std::unique_ptr<...> (as appropriate). Except that you generally create them with std::make_shared() and std::make_unique(), so that adds another 4 items there.

And then you have the fun of passing those to a function. Do you pass by value (shared_ptr) or by reference (I believe you do not) or pass a naked pointer (when you need to pass a unique_ptr to a function that uses, but does not modify or cache the pointer, if I remember correctly). And then suppose you want to give away your unique_ptr, that's fun.

And if you want to deallocate your shared_ptr that's part of a cycle, you'll need to either use a weak pointer or manually reset it.

<comment><USER12> > Now you aren't even supposed to do `new`, but rather std::shared_ptr<...> or > std::unique_ptr<...> (as appropriate).

Apples and oranges. Smart pointers are wrappers over raw pointers. They extend functionality, but are not the same.

> Except that you generally create them with std::make_shared() and > std::make_unique()

Again, apples and oranges. You're confusing factory functions that wrap memory allocation for convenience with actual memory allocation.

At most you could only complain that those factory methods duplicate the role of constructors, which would be silly.

> And then you have the fun of passing those to a function. Do you pass by > value (shared_ptr) or by reference (I believe you do not) or pass a naked > pointer (when you need to pass a unique_ptr to a function that uses, but > does not modify or cache the pointer, if I remember correctly).

There is no duplication in your examples. You are just unaware of how those functionalities are used.

</comment></comment><comment><USER13> C++ is a more type safe language than C, and some of these "duplicated" features are actually adding safety to the C versions. Most of these "duplications" are quite in line with the C++ philosophy and are there for a good reason, reducing countless bugs and making code safer.

And comparing a function pointer to a lambda expression is quite laughable.

</comment><comment><USER14> Duplicate features, and thank god they exist: References, for example, have probably stopped millions of pointer arithmetic bugs of the years.

Also, this should be viewed as C++ features C doesn't have: It's 2019 C, shouldn't be accepted anymore

<comment><USER15> Reference is among one the things I really want to be included in C. Does it break anything if it's introduced to the standard?

On the other hand, I still prefer C to C++ mainly due to the compile time (an incremental compile in a typical large C project I deal with takes a second or so, while C++ takes 3-4 seconds). C++ doesn't have to be slow, as long as you use the needed features. But idiomatic C++ means you'd be using STL, class inheritance, virtuals, operator overloading, templates and constexpr and stuff, all of which contribute to longer compile times.

<comment><USER14> I'd prefer longer compile times over runtime issues: Smart pointers are cheap, and easy to use now. C++ compile times are largely due to the absolutely ridiculous import system C++ forces you to use. Precompiled headers can eliminate a huge amount of C++ compilation time.

The obvious solution is to avoid C++ when making new codebase, but that's easier said than done.

</comment></comment></comment><comment><USER16> Herb Sutter has said again and again that his goal is to create a language that allows you to write less even though the committee is adding stuff. this fits with their goal of backwards compatibility. I don't see an issue

</comment><comment><USER17> The intent of the author is not very clear.

Of course there are duplicate features, that's an obvious downside to keeping backward compatibility while still allowing improvement.

If two equivalent/overlapping features were introduced in the same C++ version, then, yes it would be an indicator of a faulty design process.

</comment><comment><AUTHOR> Thanks to everyone for the feedback. Here are my aggregated responses:

• I feel that many commenters missed the fact that I was writing about NEAR- duplicate features of C++; I never said they were identical. But these features overlap so much that often all the alternatives are applicable in a real-world situation, and the choice becomes somewhat arbitrary, and you tend to see divergence between different coders and over the years.

• I'm surprised to see that no one said anything like "Indeed, I do see these near-duplicate features in the C++ codebase that I work with. And it bothers me because I had to learn two things instead of one, and we have no stylistic consistency".

• Some people expressed doubts about why I wrote the article. My intent and tone are clearly exhibited in the opening three paragraphs of the article; please reread them fully before judging.

• Many people dwelled on the difference between references and pointers. I firmly support references and use them in my published code. But I've seen many people who learn C++ after C, and they try to use C-style pointers for as long as possible to avoid learning the new, native C++ feature which is much safer. Hence you cannot avoid seeing pointers in C++ if you read/edit code that come from diverse sources.

• Many of my bullet points received no comments. I take it that either no one cares, or no one recognizes these points. For example, is it really sane for a language to have 3 ways of initializing a variable? (int i = 0; int j(1); int k{2};)

• A subtread about const-by-default is something I agree with, though the syntax would mismatch semantics in C. Regardless, Rust is a relatively new language with nearly all of C++'s powerful features, and indeed it implements immutable-by-default.

• I used new/delete in C++ in my early days, as a naive coder coming from C and Java with their manual management of memory allocation. But now I avoid those and rely on std::vector, std::unique_ptr, and RAII, which are safer and more concise.

• (Previous thread: [https://www.reddit.com/r/cpp/comments/6clwkq/nearduplicate_f...](https://www.reddit.com/r/cpp/comments/6clwkq/nearduplicate_features_of_c/) )

</comment><comment><USER18> From the definition of the backward compatibility you get "old features still work while the new features that do the same thing work too".

</comment><comment><USER19> Say what you will about c++, but it's the only language I know where you can declare classes as "friends" of one another.

<comment><USER13> It's there for very rare purposes, and it's considered a code smell if you ever use that feature.

</comment></comment><comment><USER20> Updates/upgrades are justified. Using old style in new code, often, isn't.</comment>


Show HN: Measure what people are saying about your website - <AUTHOR> http://www.referrerly.com/

<comment><AUTHOR> Hi HN, I just launched my startup, Referrerly! Others in a similar space are hyper-focused on SERPS, data-puking backlinks, and completely miss the bigger picture. Referrerly helps you see how your actions and content are resonating online. I wrote a 'back-crawler' that makes backlinks actually meaningful, by filtering out junk/spam and giving you the context around the link. I also collect and aggregate on a whole host of data points, bring them into beautiful charts, trend it for you, etc.. It makes it all very simple to follow and leverage.

With that said, I would love feedback! If you sign up now there is free trial, and you can use this nifty code for an extra 10% discount: analytics

Cheers

<comment><USER2> Reasons behind not providing a free extra limited account to engage your potential future evangelists (ala NewRelic) but only a time limited trial with a required credit card slot?

<comment><AUTHOR> Great question, I wanted to (at least initially) focus on the experience for paying customers, and hone in on creating value for them. Though, I can see how it may very well make sense to do something like a free extra limited account sooner rather than later.

Also, when you signup I pull in your historical data and begin back-crawling immediately. This way you don't have to wait 3 months for the charts, trends, intensity maps, etc.. to fully populate before you take action on the data.</comment></comment></comment>


Amazon fires two tech workers - <AUTHOR> https://www.washingtonpost.com/technology/2020/04/13/amazon-workers-fired/ <comment><USER2> Amazon wants either blind loyalty or silence not unlike Trump. Sad. These type of actions are not going to be forgotten.</comment>


The best Postgres feature you're not using – CTEs aka WITH clauses - <AUTHOR> http://www.craigkerstiens.com/2013/11/18/best-postgres-feature-youre-not-using/ <comment><USER3> One thing to keep in mind: CTEs are defined as being optimisation boundaries and databases are not allowed to optimise across CTEs. So CTEs have to always be resolved first.

If you later join that CTE against some other table, eliminating most of the rows fetched by the CTE, you will have wasted all the time for retrieving these rows.

This means that you might get a worse plan by using a CTE instead of a direct join.

It also means that you might convince the system to give you a much better plan by using a CTE (if you can limit the total amount of rows by the rows in the CTE instead of the tables you join it against).

Just keep that in mind when you're debugging query speed issues, but in general, CTEs are good for very readable queries that are much easier to understand and maintain than if you join inline.

The additional readability is for sure worth it to first try to solve the issue with a CTE and only if you run into above problem and if the performance is inacceptable to then convert the query to a more traditional (in a sense of "what the various open source RDBMs provided until two years ago when Postgres introduced CTEs") join.

<comment><USER4> _CTEs are defined as being optimisation boundaries and databases are not allowed to optimise across CTEs._

Wait, no. I know for a fact that SQL Server will happily optimize across CTEs. They are effectively syntactic sugar, and handled much like a view or derived table.

So, either the SQL standard defines this optimization boundary and SQL Server ignores it, or this is an idiosyncrasy of the Postgres implementation, or this is an idiosyncrasy of some other implementation that you have assumed applies to all implementations.

I honestly don't know. I wouldn't mind a syntactic construct that did define optimization boundaries, but to my mind CTEs are not that construct.

<comment><USER3> Unfortunately I haven't read the SQL standard(s) and I also seem to have trouble finding them in full on the internet.

However I was told on IRC in #postgres that not optimising across CTEs was something mandated by the standard.

Of course I might have been told something that's not quite correct or I might have misunderstood.

However in the context of postgres (which is what the article is talking about), I know for a fact that CTEs are first fully resolved. This is what I'm seeing in my query plans and it's what the manual says: [http://www.postgresql.org/docs/9.3/static/queries- with.html](http://www.postgresql.org/docs/9.3/static/queries-with.html) (at the end of 7.8.1)

If I'm wrong what the standard is concerned, then I apologise.

<comment><USER5> Yes, as far as the standard is concerned you are wrong. See [http://dba.stackexchange.com/questions/27425/is-the- optimisa...](http://dba.stackexchange.com/questions/27425/is-the-optimisation- fence-behaviour-of-a-cte-with-query-specified-in-the-sql2). But it is a very common misconception you can hardly be faulted for because it is the way postgres does it and many people claims it is due to the sql standard.

Of the only annoying features in postgres, imho. You have a large query and you try to break it up into smaller self-contained cte parts and voila, performance goes crap.

<comment><USER6> As per discussons on the email lists, PostgreSQL does it this way because this is the safest way to adhere to the standard. Presumably over time cross-CTE optimizations will be added. The problem though is guaranteeing the stability the standard requires without doing so. That's a technical issue, not a standards issue though and you are quite right for pointing that out.

</comment></comment></comment></comment></comment><comment><USER7> I love using small CTE's to help with the hassle of the alternative - <USER2> temp tables and then cleaning them up. They can be particularly useful for data modification, as you can't ordinarily do a recursive delete or insert all that easily.

PS: I always cringe when I see this sort of syntax though: "FROM users, tasks, project"

Much clearer using explicit JOINS imo, especially if your goal is readability.

<comment><USER8> Completely disagree. All the database developer "experts" I know of (including myself) hate the explicit join syntax.

I prefer to list out your tables and then do your joins in the "where" clause. For 3+ tables and mixing inner & outer joins it's especially better. I think maybe this only looks better once you become really really good at reading and writing SQL though. Maybe it's also because I come from the Oracle world where it is the standard.

<comment><USER9> I'm the opposite. I hate joins in the where clause because it is semantically wrong and confuses the building the set part with the filtering the result part. I want to see how a table is joined into the query at the place it is joined and additional filtering in the where. To me it makes it much easier to follow and not miss a join item, especially if the join happens on multiple columns.

I really hope you are not suggesting going back to things like <star>= and =<star>

<comment><USER10> _I hate joins in the where clause because it is semantically wrong and confuses the building the set part with the filtering the result part._

It is not "semantically wrong": conceptually, you can compute a join by taking the Cartesian product and then applying the join predicates to the result, which is actually what the implicit join syntax suggests. Semantically, there is no difference between applying an (inner) join predicate and applying any other predicate. There is also no actual division between "building the set" and "filtering the result": different predicates might be applied in different orders, before or after different relations in the query have been accessed.

<comment><USER8> Thats how I think about it too. Thanks for the better explanation.

</comment></comment></comment></comment></comment><comment><USER11> > For some reason most people throw out principles we follow in other > languages such as... composability just for SQL

This is because the most common API for accessing databases is wrong and doesn't support composition.

Imagine designing a general-purpose, rich API that has only one method. The method takes one giant string argument. Insane? Absolutely.

SQL is actually awesome and amazing, but many programmers hate it because their API for accessing it is horribly broken. The whole point of relational algebra is that it's... an algebra. None of which is usefully exposed if you're just mashing strings of SQL together.

<comment><USER12> I'll one up you on that. . . the common approach of treating the database as if it were an API that you shove string arguments into is wrong.

Imagine if you developed your website without ever editing a *.js file directly, and instead just programmatically mashed together strings of JavaScript code and emitted them inline in the HTML wherever necessary. You'd probably end up generating much crummier JavaScript code, too. But should you blame JavaScript or your Web application framework for the fact that your client-side scripting is crummy? No, of course not. The real problem is that you're horribly misusing your tools.

</comment></comment><comment><USER13> mssql has a lot of "tricks" associated with CTE's. Using the OUTPUT clause on updates is one of them.. Here's some queue code using a cte to grab the top one by queued date.

      DECLARE @Queue TABLE (QueueID INT)

      WITH q AS (
      		SELECT TOP (1) QueueID, StatusID, ModifiedDate
    		FROM worker.Queue WITH (ROWLOCK, READPAST)
    		WHERE StatusID=(SELECT TOP 1 s.StatusID FROM worker.Status s (NOLOCK) WHERE s.[Status] IN ('Queued'))
    		ORDER BY QueueDate ASC
      	)
      	UPDATE q SET
    		StatusID=(SELECT s.StatusID FROM worker.Status s (NOLOCK) WHERE s.[Status]='Processing'),
    		StatusMessage='New Process',
    		ModifiedDate=GETDATE()
    	OUTPUT INSERTED.QueueID INTO @Queue

<comment><USER4> The OUTPUT clause in MSSQL doesn't require a CTE, and can be used with INSERT, DELETE and MERGE in addition to UPDATE.

Likewise, your example can also be done with derived tables, which predate CTEs in MSSQL:

        UPDATE a SET col2 = 10
        OUTPUT INSERTED.key1 INTO @local_table (key1)
        FROM (SELECT TOP (1) * FROM table1 ORDER BY col1) a

</comment></comment><comment><USER14> CTEs in general are fine, just beware of using recursive CTEs to model graphs - and do graph operations - inside Postgres. My experience has been that the performance is pretty abysmal in that case, for even fairly small graphs. IMO, if you find yourself doing a lot of "graph stuff" just go ahead and store the graph in Neo4J or Titan or something.

Note that I don't mean to argue against the point of this post... CTEs _are_ very handy. It's just that one of the more commonly cited uses for them is to do graph stuff, and my experience trying to that, specifically, has not been positive.

<comment><USER15> Doing graph processing by explicitly populating a temp table is nearly as fast in many cases as neo4j with the added benefit of a vastly improved analytics experience if you plan to analyze the data or do range queries, etc... It is more work to do it smartly and efficiently, but it is possible. I'll try to find a python script I wrote as a PoC with SQLite.

CTEs and recursive queries are okay for many cases, but they can blow up your RDBMS temp space easily if you aren't careful. Especially useless is a non- materialized view based on them.

<comment><USER16> I'd be interested in seeing how you approach some of the things that graphs are better at. I have an understanding of creating efficient tree structures in a relational model - I haven't thought about the more general case of graphs though.

I was recently involved in a project that was using neo4j as a datastore. In the end we switched to postgres because the cognitive load was lower, the tooling was better and the relationship management was easier and more explicit. The trade off is going to be that later the relationship exploration will be a little harder. My plan was to add a graph datastore back in to mirror the relationships in the system so we could query it.

</comment></comment></comment><comment><USER17> The topic of CTEs was recently discussed (with much vigor) on the SQLite users mailing list:

[https://www.mail-archive.com/sqlite- email@example.com/msg8119...](https://www.mail-archive.com/sqlite- firstname.lastname@example.com/msg81199.html)

<comment><USER18> "as long as the 'RECURSIVE' part of CTE is ignored."... To me, the recursive part of CTEs is half the point! All the other stuff is syntactic sugar that can be done elsewhere, but recursion is a function that I'm unable to find another method for elsewhere in the language.

Note: I have far more SQL Server experience than I do with any other DBMS.

</comment></comment><comment><USER19> "In most cases I have seen performance differences smaller than a 2X difference, this tradeoff for readability is a nobrainer as far as I'm concerned. "

I wouldn't call a 2X difference in performance a "no brainer". Far from it. It could be the difference between a visitor trying your product and him leaving b/c it takes too long to load.

<comment><USER20> I'd agree but it really depends to be honest.

A 100% increase in query time for a query that originally takes 50ms is neglectable, for a query that takes 500ms it will indeed make a vital difference.

</comment></comment><comment><USER8> All SQL databases have this feature, it's nothing specific to PostgreSQL.

I don't like the "with" syntax though, I just do it all inline.

      select * from
      (
        select * from blah 1
      ) a,
      (
        select * from blah 2
      ) b
      where a.x = b.x;

<comment><USER7> The advantage of CTEs is they have the explicit "WITH RECURSIVE" option. Whereas an aliased SELECT statement can't refer to itself as far as I know.

<comment><USER21> Recursive CTEs are super amazing. One of the great underused features of SQL. Give me tall PostgreSQL and a WITH RECURSIVE to steer by, and i will happily take on any graph database.

Not promising i'll win, mind.

</comment></comment></comment><comment><USER22> I don't know about postgres but joining CTEs in Sql Server is a recipe for blowing up your tempdb or at the very least waiting for ages for a trivial query to finish.

<comment><USER23> You must be doing something wrong then. MSSQL resolves the entire statement (CTEs plus final query) into a single query that it optimizes as a whole.

Can you share an example of two queries that are equivalent where one is written using CTEs and it doesn't construct the same plan?</comment></comment>


The end of an era: Internet Explorer drops below 50% of Web usage - <AUTHOR> http://arstechnica.com/microsoft/news/2011/11/the-end-of-an-era-internet-explorer-drops-below-50-percent-of-web-usage.ars <comment><USER3> It had been a while since I stepped back and looked at IE6 usage, so I pulled some numbers off of a site I manage just now to see where things were.

In January 2007 IE6 represented 64% of _total_ site visits.

In October 2011, IE6 represented 1.4% of visits.

Wow.

<comment><USER4> I don't think that stat is particularly meaningful. Your FF1 usage figures have I'm sure dropped off far more severely.

<comment><USER3> It's incredibly meaningful in deciding whether it makes sense for us to continue supporting IE6 or not. And IE7 appears to be not far behind.

<comment><USER4> Here's me thinking you were commenting on the story at hand ... silly me.

</comment></comment></comment></comment><comment><USER5> Meanwhile in Russia:

<http://www.liveinternet.ru/stat/ru/browsers.html>

IE is around 20%

I wonder why Russia leads the way moving off IE. My guess: in corporate sector pointy-haired bosses don't actually have control over which programs system administrators get to install, so they install (and users get to use) whatever they know works best.

<comment><USER6> In a lot of countries there are government web sites and services that forces citizens to use Windows and specific versions of IE. Some of them used Activex, vbscript etc, The worst example I remember is an important web service for drugstores in Turkey that required Microsoft Java VM!

Apparently this is not the case for Russia.

<comment><USER7> Similar deal with banks in South Korea typically requiring ActiveX plugins and the like: [http://blog.mozilla.com/gen/2010/04/28/the-security-of- inter...](http://blog.mozilla.com/gen/2010/04/28/the-security-of-internet- banking-in-south-korea/)

<comment><USER8> South Korean banks seem to be oblivious to security research and best practices. ActiveX plugins that install _several_ buggy DLL libraries are only the tip of the iceberg. 64-bit IE fails to open most banks' websites. IE 9 does not work at all. I was even sent a codebook (it has a list of colour- coded numbers which hash to codes, on paper!) by my South Korean bank for internet banking. I thought it was a somewhat archaic practice but physical books of codes do constitute "something you have" for authentication. Then I discovered that my partner had the same book. I disabled internet banking after that.

</comment></comment></comment></comment><comment><USER9> As recently as five years ago, I thought this would never happen. The argument was something like: "All Microsoft has to do is put out a good-enough browser. Every time people buy their next computer, IE will be the default and they won't bother to switch. The only way would be if Apple gets a big part of the desktop market, and that's very unlikely."

Wrong in so many big ways: \- Completely missed mobile browsers \- People aren't upgrading their desktops as often anymore \- The browser is the most important app, so people are motivated to get the best one \- Apple's growth

I love this industry.

<comment> mike-cardwell I'd be interested in seeing figures comparing Europe to other continents. If you remember, Europe forced Microsoft to give the user a choice between browsers when Windows boots up for the first time.

<comment><USER10> Europe has more Firefox usage, but the rate of change in IE (or Firefox or Chrome) usage doesn't seem to have been affected materially by the government intervention.

It's also quite variable within the EU, compare UK to Germany for example.

<http://gs.statcounter.com/#browser-eu-monthly-200807-201110>

<http://gs.statcounter.com/#browser-DE-monthly-200807-201110>

<http://gs.statcounter.com/#browser-GB-monthly-200807-201110>

</comment></comment></comment><comment><USER11> StatCounter (<http://gs.statcounter.com/>) paints a different picture where IE crossed that line an year ago. It's numbers are reasonably consistent with data from sites I manage.

Chrome is growing wildly in Brazil, envy us: <http://gs.statcounter.com/#browser-BR-monthly-201010-201110>

_edit: Russia wins :(_

</comment><comment><USER12> This happens right as Microsoft's anti-trust restrictions are lifted and they are forcing OEMs to make it really hard to boot Linux. Not a good omen. The next Windows will have IE tightly integrated, but hopefully it has lost enough ground that things won't be like the old days.

<comment><USER13> Isn't this already the case with Metro in Win8? You can only use IE.

I suppose it's possible that they will try and force their market share back similar to "must not duplicate existing functionality" with apple stuff.

The problem with this whole thing is that generally capitalism and innovation work best when there are few restrictions on competition so I wonder what will happen if everything becomes so locked down by a few companies who will prioritise their products over competing ones even if the competing ones may have something else to offer.

Could this lead to mass stagnation like it did with IE6 but on a larger scale?

If this is the case then an open alternative such as Linux would actually become much more attractive to independant software vendors because there they can compete on merit.

<comment><USER12> metro is what I was referring to

</comment></comment></comment><comment><USER14> Someone pinch me.

Is that a light I see at the end of the tunnel?

<comment><USER15> What's your expectation? That IE < 9 will sink to a number that you won't have to support? That clearly isn't going to happen for many, many, many years. Microsoft could file chapter 7, today, and you'd still see IE as a large- enough-to-matter browser share for years to come.

The really interesting piece of information is the percentage of clients that support advanced CSS3 attributes without needing any kind of polyfills, and have faster Javascript engines. That percentage appears to be going up very, very quickly. We've stopped designing for "IE first", and instead are targeting browser capabilities. Modernizr for development, then extremely targeted Javascript and CSS for production.

<comment><USER16> Why not? Google doesn't support IE7 for Google Apps. They claim that they will only support the two most recent versions of any browser. Should we expect that they will drop IE8 support once IE10 ships? For personal use, people need to be nudged to use a modern browser. The average person probably just uses the browser that ships with their machine and doesn't even know to upgrade.

<comment><USER17> Depends how many XP users there will be left, the '2 versions' nonsense is just that, nonsense.

XP users can only use IE8 however. So XP market share and the number of their clients still using XP will drive what Google does and does not support.

</comment></comment></comment></comment><comment><USER18> Stats for deviantart.com, which skews towards a younger audience: <http://cl.ly/1v0w2Z1H0C2E28162n3W>

<comment><USER19> Do you have stats for the different IE versions?

<comment><USER18> Yes: <http://cl.ly/1U0j0V2T0Q410j3J1t0O>

</comment></comment></comment><comment><USER20> When we started developing our web-app 18 months ago we decided from the outset not to support IE. It's just too much of a headache for a heavy JavaScript site.

We develop to Chrome and Firefox. This basically gives us Safari and Opera, too.

</comment><comment><USER21> Demographic still makes all the difference. I have one site that gets ~1m visits/year, targeting older folks. IE numbers: 2007, 86% 2010, 67% YTD, 62% (ie6 still 4%)

</comment><comment><USER22> Not that I'm dismissing this statistic, but android browser is included in the pie chart so I'm guessing mobile safari (i.e. iPhone and iPad) are included in this sample as well.

In my opinion, this is a little misleading. Sure, IE use has decreased overall, but its deterioration is also due to a growing mobile user base. It's worth pointing out that there are likely much disparate data for the matter, a few of which are:

<http://en.wikipedia.org/wiki/Usage_share_of_Web_browsers>

<http://gs.statcounter.com/>

<http://www.netmarketshare.com/>

With the last one, browsers are broken down by desktop versus mobile/tablet and desktop usage still puts IE at over 50%. I guess it just depends on where one looks for the information.

</comment><comment><USER23> Eh, I'm going the other direction. I've picked up IE9. It has a few small negatives, but it is pretty fast and light.

The irony is I occassionally have to install Firefox because some website isn't compatible with IE9.

<comment><USER24> ... you mean that IE9 isn't compatible with a website. It's been documented and my experience that while IE9 does fix somethings IE8 got wrong, it also breaks on lots of things even IE8 got right. It's a huge headache and not really any kind of step forward

</comment></comment><comment><USER25> Just yesterday I had a chat with a guy who's an entrepreneur in tech sector, and kept asking me: "What's wrong with IE? I'm using it for years and never had a problem? I don't want to install Chrome unless you can tell me what is the benefit of it." (and then he dismissed all the arguments I had for better browsers).

I kinda gave up on such people. Life is too short to convince someone who doesn't want to, and better spent with making awesome stuff. :)

</comment><comment><USER26> With Microsoft only supporting ActiveX technology to enable most features of their Remote Web Workplace Sharepoint websites, IE is going to be around awhile still. Almost one quarter of my small business clients for my service business use Small Business Server.

And until I move away from Exchange Server (email), I still keep a Windows virtual environment going just to run Outlook on.

</comment><comment><USER27> The web will be a better web when IE6 and IE7 don't need to be supported. Think of all the time that was wasted working to support them. Following Steve Jobs' analogy of saving lives through speeding up boot time a few seconds: how many people has IE6/7 killed?

</comment><comment><USER28> The worldwide _mobile_ browser market share chart is iffy. They're suggesting that Safari Mobile (i.e. iPhone + iPod + iPad) accounts for 62% of the market. The numbers are based on web-page visits to sites that are part of the 'net applications' network[1]. I suspect that Android, Blackberry and Symbian devices are being seriously undercounted, either because they're more likely to be sold with a limited data-plan or because they're more popular amoung users in countries that are less likely to visit these sites. In short: I'm sceptical that iOS is almost 2/3 of the worldwide mobile browser market.

[1] <http://www.netmarketshare.com/mobile-methodology.aspx>

<comment><USER11> It measures page visits, it can't count all those symbian/bada browsers sitting unused in people's pockets. They're not _in the market_.

</comment></comment><comment><USER29> The "browser usage" market share is a very inaccurate and pointless stat by default. Do developers really care if a user uses 5 hours a day his browser or 1 hour? Wouldn't they care more about _how many_ use a certain browser?

Especially on the mobile side, the stats get very skewed, because browser usage will be _much_ higher on a tablet (read: iPad) than on a smartphone (iPhone/Android/Symbian/whatever). So say 10 million iPads could get as much "browser usage share" as 50 million iPhones. The iPads, although much fewer than iPhones, could easily double up the "iOS Safari" market share in this type of stat. That's why these stats don't make any sense.

<comment><USER30> I had to go back and re-read but couldn't find anything relating to it: why did you assume they used hours of usage as a metric versus the number of visits to the site?

</comment></comment><comment><USER31> ... and good riddance!

</comment><comment><USER32> Any tips on getting friends and relatives to switch? Mentioning security concerns seems to give the best results for me, but using fear makes me feel dirty.

<comment><USER33> Fresh install of whichever browser when they buy a new computer works best but that would make you feel dirty too ;)

</comment></comment><comment><USER34> well finally there will be some legit competition, not based on who has the underlying operating system but on real power, speed and features :)

</comment><comment><USER35> They lead with:

"A couple of interesting things happened in the world of Web browser usage during October."

But at the end:

"Ars Technica's unusual usage figures are not surprising when considering its audience: visitors to the site tend to be technologists and early adopters"

Many people are likely to just assume they have a source other than their own usage statistics and ignore the long winded explanation at the bottom. The red flag for me was the mobile browser statistics.

<comment><USER36> That's because the bulk of the article (to which the headline applies), is based on Net Applications' globally-captured data ( <http://www.netmarketshare.com/> ), while the last part of the article (to which that disclaimer applies), is based on the Ars site's browser usage stats.

<comment><USER35> Is there another reference to net applications aside from the graph footers? I had to go back to find what you mentioned but thanks for pointing that out.

</comment></comment></comment><comment><USER37> The main website I run is at 56% IE users and that has gone up in the last 4 months instead of down.

<comment><USER38> Which version has gone up?

<comment><USER37> IE9

<comment><USER38> I wonder if at least some of them are enterprises who switched after the Asa/Kaply fiasco.

</comment></comment></comment></comment><comment><USER39> Glad I live to see this day. :)

</comment><comment><USER40> W3Schools says that IE usage is at 22.9% in Sept 2011.

<http://www.w3schools.com/browsers/browsers_stats.asp>

<comment><USER28> The bias in the user population for a site that teaches web development is going to be huge. The link you provide states:

"W3Schools is a website for people with an interest for web technologies. These people are more interested in using alternative browsers than the average user. The average user tends to the browser that comes preinstalled with their computer, and do not seek out other browser alternatives."

</comment></comment><comment><USER41> So many people still on IE 6, I pity you!

</comment><comment><USER42> I don't buy it.

My company manages a number of websites; the site with the most homogenous use across all demographics shows IE at 80% usage.

Here's a shot from the last couple of days: <http://a.yfrog.com/img614/5741/ls8.png>

Edit: IE usage breakdown: <http://a.yfrog.com/img612/6052/f2yf.png>

<comment><USER43> Wikipedia shows IE at only 35% of it's current traffic, and they are a top 10 site.

[http://stats.wikimedia.org/wikimedia/squids/SquidReportClien...](http://stats.wikimedia.org/wikimedia/squids/SquidReportClients.htm)

<comment><USER4> It would be interesting to know the story behind some of those stats - <USER2> wonder why those people are using FF1.0? (or indeed if, perhaps that's just the UA string they set).</comment></comment></comment>


Running a Startup on Haskell - <AUTHOR> http://www.infoq.com/presentations/Running-a-Startup-on-Haskell <comment><USER2> For anyone who'd prefer a direct video link rather than the infoq flash player: [http://d1snlc0orfrhj.cloudfront.net/presentations/11-sep- run...](http://d1snlc0orfrhj.cloudfront.net/presentations/11-sep- runningastartuponhaskell.mp4)

(Retrieved by setting my User-Agent to that of an iPad, which causes infoq to serve up a <video> tag.)

<comment><USER3> Thanks for the link, and for the hack. That's quite handy.

</comment></comment><comment><USER4> Haskell web frameworks are maturing rapidly and the language is a joy to work in, once you learn how to approach problems in it. Haskell has probably not reached the peak of it's popularity yet (and frankly it's overdue for some mainstream love).

<comment><USER5> I think Haskell (and functional languages in general) will become increasingly popular as it is (they are) a powerful way to deal with concurrency and can easily take advantage of multiple processors. Languages are tools in a developers toolbox, and Haskell turns out to be a powerful one for several growing problems.

<comment><USER6> It's not just that. Haskell has exceptionally strong typing and containment of mutable computations, making it much easier to write correct programs. When a module compiles, it's usually pretty bug-free.

<comment><USER7> Space leaks, stack overflows (foldl vs. foldl'), failed pattern matches (head []), etc. There are tons of bugs lurking in well-formed Haskell programs.

<comment><USER8> Tons being a vast overstatement. I mean, you could exploit these things to cause bugs, but really do you encounter them on a day to day basis? I know I rarely if ever have.

</comment></comment></comment></comment></comment><comment><USER9> Does Haskell offer any tangible, practical advantages or benefits over other languages in the context of a web framework, aside from just "if you prefer a functional style of programming and you're working on a web project, here's a way to do it"?

I'd love for somebody to convince me why a Haskell approach to web frameworks is superior to Python/PHP/Ruby/JS beyond the usual "it's a matter of taste" argument.

<comment><USER10> Haskell's advantages (and disadvantages) as a Web Framework are generally the same as in any other application domain: performance, concurrency, and correctness.

<comment><USER11> While I agree regarding correctness and concurrency, I wouldn't emphasize performance, even for Java and .NET, whose GCs are more developed, tuned and tested in the production environment than Haskell's one.

Edit: And for Haskell, achieving needed performance can be quite tricky with regard to its laziness.

<comment><USER6> _Edit: And for Haskell, achieving needed performance can be quite tricky with regard to its laziness._

But Snap is driven by enumerators/iteratees (via the enumerator package), which make it much easier to do fast near-constant space IO.

I have built a web application that uses Snap to query large (parse) treebanks, and it was easy to make it performant.

</comment></comment></comment></comment><comment><USER12> I only read the slides, but at one point the author mentions that they've built an hybrid app using (Haskell + C#).

Next, the author mentions about several limitations that C# has and that Haskell has a much better approach.

So, why use C#? Why not only use Haskell?

<comment><USER13> He mentions that later on during the Q&A session

<comment><USER14> Could you please repeat it here so we don't have to search? Thanks.

<comment><USER15> Their application is an extension of Outlook, which only has a dot.net API.

<comment><USER14> I wonder why they didn't use F#.

<comment><USER10> He answered that too: language maturity. He was unfamiliar with the .NET ecosystem in general, and the availability of help/expertise/examples etc was much greater for C# than F#.

</comment></comment></comment></comment></comment></comment><comment><USER16> So no-one has built a QuickCheck for Ruby or Python?

I'd like to use this "property-based testing" he stressed.

<comment><USER17> There are plenty of implementations linked from <http://en.wikipedia.org/wiki/QuickCheck>. (I'm not sure in what state they are though.)

</comment></comment><comment><USER18> anyone watch this yet? worth the 50 minutes? is there a transcript?

<comment><USER19> If you're interested in Haskell then yes it is a good presentation. In my opinion, Bryan is one of the more thoughtful speakers around.

Slides are here: [http://bos.github.com/strange- loop-2011/talk/talk.html#%281%...](http://bos.github.com/strange- loop-2011/talk/talk.html#%281%29)

Navigation uses keyboard arrows.

He had a similar/same talk about a month prior and here is the video on Vimeo if you're not a fan of InfoQ's format:

<http://vimeo.com/27192476> (Bryan O'Sullivan - Building Solid Distributed Applications with Haskell and Riak)

</comment></comment><comment><USER20> Terrific video! Thank you very much for posting! UP!</comment>


How WPEngine Brings Blazing Speed to 300,000+ Websites - <AUTHOR> http://www.hostingadvice.com/blog/wpengine-page-caching/

<comment><USER2> Like lipstick on a pig.</comment>


How to build your first website in six hours (with a hangover) - <AUTHOR> http://www.toddmgreen.com/2011/09/24/how-i-built-my-personal-website-in-six-hours-with-a-hangover/

<comment><USER2> @scone,

Having built a number of WordPress sites myself, I liked your write-up a lot. Very understandable for the beginner. My son (age 12) is about to build a website for his Boy Scout troop and your explanation of the steps will help a lot.

(Hangover optional for Boy Scouts, of course.)

Now. If only someone would write up a similarly-simple blog post about setting up a local development environment on a Mac, with brain-dead instructions on how to roll the finished website (and future updates) to the remote host (without brain damage) . . . .

(Let me just say I have wrestled with both MAMP and Bitnami and while they are pretty good, both inflict their own increment of brain damage.)

<comment><AUTHOR> Thanks very much Philip - hope your son's website-building goes well, with or without a hangover!

</comment></comment><comment><USER3> Few things. Cool piece for something who's maybe a beginner but not totally sure for this audience. Also I don't know why this would take six hours? Maybe with the propagating which would mean it could take 24 hours.

<comment><AUTHOR> @brackin Thanks for the comment. Both fair points. I submitted it because I thought it might be helpful for experienced people who keep getting asked for help. The six hours refers to my (fairly leisurely - read non-specialist) pace; I didn't factor in propagation because I was just counting the time taken by the creator.

[Edit: reposted so it's threaded with the original comment.]

</comment></comment><comment><USER4> thanks for the post, I had been doing the basic websites myself from the old form HTML, and this article helped me understand the Wordpress more. I just hope there's a multiple choice section where in you will just click and personalize the website without too much complication

<comment><AUTHOR> No worries; thanks. There isn't a multiple-choice section for changing the look of the site, but the CSS code that determines the look is pretty clearly laid-out. I'd advise two things: 1) only change one thing at a time, and 2) before you begin, make a copy of the CSS file so you can always reset if you need to.

<comment><USER4> thanks for the tips, those were very helpful :)

<comment><AUTHOR> No worries - good luck!</comment></comment></comment></comment>


Ask HN: Advice for Hosting and Deploying My Side Project - <AUTHOR> I'm finally starting to wrap up the MVP of my web app which is my side project.  Now I'm starting to look at how I'm going to host it, and I'm getting overwhelmed with the number of options.  My background is in desktop\embedded code, so I've not really had to deal with this much before.  My app is written in Rust on the Rocket framework and uses PostgreSQL and PostGIS.
I was originally looking at Digital Ocean, however I'm thinking that managing that might be too much work for me, and it will be too easy to make a stupid security mistake.  I'm currently looking at https://www.clever-cloud.com/en/rust-hosting which seems safe and easy.  Are there better options?
Should I not try and ignore this stuff and spend the time like learning something like Docker instead?
Any other tips?  Anything I'm overlooking? <comment><USER2> I would have said Heroku. But it doesn't appear its as straight forward for your stack as it is for others. However this looks promising: [https://github.com/emk/heroku-buildpack-rust](https://github.com/emk/heroku- buildpack-rust)

I would have also suggested [https://nanobox.io/](https://nanobox.io/) \- but their pricing is no longer transparent (used to be pretty cheap). It would also involve dockerizing your app.

As for clever cloud, their Rust support is in beta...

I'd spend a short amount of time on Heroku though, if all goes well that's the best option for an MVP IMO

<comment><USER3> You might look at this for running rust on heroku:

[https://elements.heroku.com/buildpacks/rhelmer/heroku- buildp...](https://elements.heroku.com/buildpacks/rhelmer/heroku-buildpack- rust)

Note I haven't done this, but it turned up in a search.

<comment><USER2> FYI that's a fork of the repo I posted. The fork hasn't been updated in over 3 years

<comment><USER3> Ah, sorry about that, I thought it was better because it had on the heroku domain.

</comment></comment></comment></comment><comment><USER4> You were on the right track, DigitalOcean is the _easiest_ and at $5/mo for Debian/Ubuntu, it should be sufficient for an MVP.

If you are concerned about security, just follow the "simple" steps below

[https://www.digitalocean.com/community/questions/best- practi...](https://www.digitalocean.com/community/questions/best-practices- for-hardening-new-sever-in-2017)

.. it's mostly just typing stuff in a terminal

You can probably skip 10, 11, 14, 15, 16, 17 (in the short run)

If you want to automate this, you can learn Ansible (or Fabric fabfile.org) but that is probably premature

Just make sure you have a backup of everything on your server (nobody is going to take that more seriously than you, specially for customer data)

For scaling, they have some simple Load Balancers now (pick the correct region where it is available) ... used to have to do some DNS-based load balancing before (AWS R53). Again, probably premature but it can be done without too much pain once you get there

<comment><USER5> Second this. DO is great and I host all my projects, whether static websites, Node.js applications or just MVPs there.

\- Static Websites on one $5 Droplet with Server Blocks: [https://www.digitalocean.com/community/tutorials/how-to- set-...](https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx- server-blocks-virtual-hosts-on-ubuntu-16-04)

\- Web Applications on one $5 Droplet with Dokku: [https://www.digitalocean.com/products/one-click- apps/dokku/](https://www.digitalocean.com/products/one-click-apps/dokku/)

In case if you are interested, I explain my setup over here: [https://www.robinwieruch.de/deploy-applications-digital- ocea...](https://www.robinwieruch.de/deploy-applications-digital-ocean/)

</comment></comment><comment><USER6> Don't worry about all that security / docker with a MVP, you can deal with that once you know your project is solving a problem and you need to scale.

My personal recommendation is a small VM in Google Cloud for the app and another small managed postgres server (backups automated). GCloud is easier to get started with and they automatically migrate your app VM if there are hardware problems. This would run you less than $50 (~30 ballpark) per month. The other consideration is https (mainly for not appearing dangerous in the browser).

(Boycotting AWS)

<comment><USER7> This comment hits the nail on the head for me.

Pick a cloud provider. Spin up an instance that will be your server. Spin up an instance that will be your DB. Make your DB only listen to your server instance. Make your server instance only listen on port 80/443.

As long as your app isn't vulnerable to SQL injection type stuff, that's probably enough security for an MVP, and this kind of set up puts you on the right track for scalability.

Source: am DevOps.

<comment><USER6> Me too :]

</comment></comment></comment><comment><USER8> Docker is about uptime, consistency, integrity, CI/CD, etc. If you're just testing stuff, and won't notice a day or two of downtime, you can skip it for now (but it does make things easier once you learn it).

Always keep working backups of whatever you want to have on your server. Expect your server to get erased at any moment without previous notice, be aware of how much data are you willing to lose in case of a failed restore.

If you're processing user data, be aware of applicable data protection laws (if any).

Security is only relevant if you become somewhat popular, or you plan on leaving the project completely unattended for a longer period of time (don't, you will most likely get hacked). Otherwise, apply basic security measures and don't sweat it too much until you actually start having something worth protecting. Erasing and re-creating a server/instance from scratch is acceptable and secure enough in the beginning.

</comment><comment><USER9> Might check out AWS Lambda for the Rust backend, I usually use a SAM config to deploy ([https://aws.amazon.com/blogs/opensource/rust-runtime-for- aws...](https://aws.amazon.com/blogs/opensource/rust-runtime-for-aws- lambda/)).

For the DB, you could then use RDS, a managed postgres service, looks like it supports Postgis: [https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appen...](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html)

</comment><comment><USER10> DigitalOcean offers the basics with a straightforward API and UI for management at an affordable price. It won't have the offerings of AWS or GCloud, but if you ever need to move to a larger provider, you're guaranteed to have what you're using at DO. I'd go with DO until you have a reason to switch.

</comment><comment><USER11> First piece of advice: Relax, don't sweat it too much. I 'hosted' my first side project on a Raspberry PI. My second was on an AWS EC2 instance on the tiny free tier. Nothing wrong with having the db and the app on the same server (in my case Python and Postgres). The projects were mostly for fun though, and I was not worried about scaling or anything like that, but it was quick, cheap and easy.

If you are worried about scaling (which would be a nice problem to have), you can still start out on AWS (or another provider's) free tier, and then just upgrade the instance if you start getting an uptick in use. If you are lucky enough to out grow vertical scaling, then you will have plenty of motivation to figure out the horizontal part. Just carve out an afternoon to sort it out. And if you are really ambitious, try setting your app up on multiple providers. After the first one is up, figuring out the others should be easier (cause they all basically do the same thing), and then you can play around with them and stick with the one you like best. Might cost a little more initially, but could help put your mind at ease.

Regarding security, just make sure you are salt+hashing users passwords. You can worry about the other stuff later. And as others have mentioned, if you do one thing, make sure you backup your database. You can start by just doing it with a daily crontab (or even do it manually if you really need to). It your app crashes, you can always restart it, but if you loose the db, you are hosed.

Also, you might want to consider getting some test users (friends, family) to poke at it before releasing it into the wild. This will help you surface any bugs. If this is your first web app, I would rate your odds of having issues large enough to ruin your launch as: 95% chance due to bugs | 4.5% chance due to scaling issues. | 0.5% chance due to security issues. If a site is getting the HN hug of death, it usually peaks my interest more, and I will bookmark and come back to it. But if its buggy as hell, I loose interest right away.

</comment><comment><USER12> I used DigitalOcean for my food based web app. I would definitely recommend them.

The skills to setup and maintain the machine are valuable to learn. I would recommend documenting everything as you may not remember everything you initially did. One example would be how to backup your database, or another how to upgrade your database when a security patch comes out.

Some things I did that were helpful:

Stick with long term support (LTS) versions of the linux you choose as this will minimize how often you have to upgrade things.

If you can automate security patches, do so ( Debian and Ubuntu have this )

Setup something like fail2ban to help monitor and block intrusions.

setup key less ssh access.

put your web app behind a proxy like nginx and have it handle the https

</comment><comment><USER13> One of the more difficult parts of self hosting with a service like digital ocean is managing your own database. Luckily DO just introduced managed postgres databases. Also you can use DO load balancer so you don't have to manage a load balancer and deal with setting up let's encrypt ssl certs, and only have to worry about deploying your web app. I wouldn't go with docker for production just yet because while docker is great for immutable servers and dev/ops parity, it makes things like secret management, logging and monitoring more complicated.

</comment><comment><USER14> Heroku isn't a bad option.

<comment><USER15> I second Heroku. Definitely the most simple setup option.

<comment><USER16> I third Heroku.

<comment><USER17> I fourth Heroku.

<comment><USER2> I fifth Heroku.

</comment></comment></comment></comment></comment><comment><USER18> Caveat: I have not worked with Rust. The comments below suggesting Heroku, DigitalOcean and other PaaS are good starting points. However, I want my side projects to be able to handle arbitrary load without managing additional infrastructure.

I design my current web apps to work using serverless functions [https://serverless.com/](https://serverless.com/) This ensures that if my applications become popular, I will not have to do additional infrastructure work to scale. I use a cloud provider managed database (AWS DynamoDB, RDS for Postgresql) so I don't need to worry about managing that either.

There is a steep learning curve! A quick Google search shows that Rust serverless is in its infancy ([https://github.com/softprops/serverless- rust](https://github.com/softprops/serverless-rust)). Also, if you need to have bi-directional communication using WebSockets (or something comparable), the options you have to work with are limited (AWS AppSync is what I am currently struggling with)

That being said, it has been an extremely challenging and rewarding experience, migrating my personal projects.

</comment><comment><USER19> If you are in Europe you can also check out Hetzner Cloud. Pricing is way way better than everything else. You have to manage it yourself though, but it's easier than you might expect and you are learning something new on the way.

<comment><USER20> I was about to suggest Hetzner Cloud as well, but wasn't sure if OP is looking for IaaS (like Hetzner Cloud) or PaaS.

</comment></comment><comment><USER21> I always recommend [https://codemason.io/](https://codemason.io/)

I use it for my own web app, and it is perfect. The support I get from Ben (the founder) is awesome. He knows _a lot_ about devops and is a very kind person.

It will take care of all the configuration for you and still let you choose your hosting (mine is DigitalOcean). It uses Docker, so learning a little bit of it would help.

</comment><comment><USER22> Azure App Service is totally free for small instances.

</comment><comment><USER23> I am writing a book exactly for this purpose right now.

For someone making a project and asking "how do I host it now?". My pre- release is still ~3 months far away, so you cannot buy it now, but if you would like to learn the deployment yourself at some point, here it is:

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

What I recommend is to learn the fundamentals right and start with Bash before jumping to more complex config management tools. Even if your deployment process won't be smooth in the beginning (copy files, setting something manually) do not underestimate the security aspect - you owe it to your users to protect their data.

And avoid ANYTHING you don't need right now. Avoid Docker and the whole universe of tools around Kubernetes. I imagine with Rust you can easily deploy one binary with systemd unit, PostgreSQL service from the OS, set up NGINX and SELinux and you are done.

Someone here said Docker is about uptime. What the *? Docker is additional layer where something can go wrong so by definition it won't be better than just a systemd service.

</comment><comment><USER24> What kind of budget are you on?

<comment><AUTHOR> Minimal. I don't expect this to make a raft of money any time soon, so I'm looking for a good balance between hands off and cheap. I'm hoping $50/month will be towards the upper end of cost, but I could go higher if needed.

</comment></comment><comment><USER25> I use Linode to host all my side project. It's similar to Digital Ocean offerings and so far work pretty fine.</comment>


EU antitrust regulators say they are investigating Google's data collection - <AUTHOR> https://www.reuters.com/article/us-eu-alphabet-antitrust-exclusive/exclusive-eu-antitrust-regulators-say-they-are-investigating-googles-data-collection-idUSKBN1Y40NX <comment> gator-io I've always been amazed that very few organizations question why Google Analytics is free. Sites are literally handing Google a list of targeted visitors their competitors can advertise to.

<comment><USER2> Just to be super clear: Google Analytics is not free, the entry version with a limited a visitors/visits it can logs per day is free, then you have to pay to get the full version.

Delivering a quality free product to get companies to sign for the expansive one when their needs increase is a very common marketing system, and allows to keep control of the market despite being vastly out of price. Works for desktop app, mobile app, web services, ... I say this as someone who once had to sign for the full version for a web property I was working at.

This is a matter where people are quick to over react so let's be super clear: I am NOT saying the limit is placed at a reasonable level, nor that companies absolutely need to have the paid version and can't extrapolate enough from the free version data (they absolutely can), nor that Google isn't majorly benefitting in other way than full version sales (they do).

What I'm saying is that "the base version is free and the full version is paid" is a very common thing that doesn't by itself mean anything nefarious is taking place.

<comment> open-source-ux _" that doesn't by itself mean anything nefarious is taking place"_

I don't believe that Google is intentionally doing nefarious things either, but that doesn't mean we shouldn't subject them to close scrutiny over their date collection practices. Whether Google Analytics (GA) is free or not is beside the point. The free version of GA may limit what GA users see, but that doesn't stop Google from capturing far more data than they expose.

This is a company that tracks users on an industrial-size scale that no other online company can match. And yet despite that, most developers are more likely to rush to Google's _defence_ rather than question those data collection practices. (Does a multi-billion company with an army of lawyers need developers to defend it?)

I've said this many times: the hypocrisy that runs through the programming profession when it comes to online tracking really knows no end.

<comment><USER2> > this is a company that tracks users on an industrial-size scale that no > other online company can match. And yet despite that, most developers are > more likely to rush to Google's defence rather than question those data > collection practices.

If that is what you read in my message, then you are projecting what you want to see on what I actually said. Nothing I said defends Google on that front.

EVERYTHING in your post is completly out of scope of what I said in answer of parent's post. What I said, is that just because some company does something wrong doesn't mean everything that company does is wrong. Or in this case, that while Google is obviously massively syphoning data on a gigantic scale, NO analytics basic tier being free, by itself, isn't an element of wrongdoing.

If anything, your post proves my point, that when they believe they know the end results people are quick to make up the narrative in between to reach it, even if they need to throw the baby with the water too.

</comment></comment></comment></comment><comment><USER3> > Google has said it uses data to better its services and that users can > manage, delete and transfer their data at any time.

No, users cannot delete their personal data, unless they have a Google account. Google collects an enormous amount of personal data from people without a Google account, and offers no tools for controlling that data.

<comment><USER4> Even with a Google account, a great deal of data like analytics is not associated or partly associated with the Google account.

In theory one would have to go to every website and request they report/purge data from analytics, but Google provides no mechanism for websites to comply with such a request.

<comment><USER5> I don't think one can request that even in theory. If the data is not personally identifiable, then it is not owned by you (at least in my understanding of gdpr and similar privacy regulations). "yabadadoes (or their IP) visited the site" is your data. "someone from yabadabadoes country visited the site" is not your data and it's not up to you to say what the site owner does with that information.

<comment><USER4> A user has clientids and/or userids and Google seems to be capable of connecting these back to learn things about users and sites. So what exactly is personally identifiable is a secret..

As I see it Google has fallen into the false position that things they agree not to do based on user settings is the same as not collecting and storing the data necessary to do them. I don't think regulators will see this Google's way.

<comment><USER5> If the analytics records aren't associated with those IDs, and can't be reidentified due to protections like k-anonymity, I don't think it's relevant that Google has other records that are subject to gdpr, and are handled differently.

</comment></comment></comment></comment></comment><comment><USER6> I hope part of this investigation revolves around AMP and Google's tracking and analytics on AMP sites...

<comment><USER7> amp is so annoying. Just link to the sites no need to track (can't they just do it with js) and then the number of people who then post them to Reddit or Facebook because they copy the results link the whole thing is infuriating.

<comment><USER8> [https://addons.mozilla.org/en- US/firefox/addon/amp2html/](https://addons.mozilla.org/en- US/firefox/addon/amp2html/)

<comment><USER3> That's a great initiative, though we need a solution that does not load AMP pages from Google before redirecting to the real site.

<comment><USER9> Changing Google's SERP inline I guess?

</comment></comment></comment></comment></comment><comment><USER10> Somewhat related, a thing I found suspicious, though not surprising, the last time I tried it:

Try Googling for how to block all Google Analytics and related services in your Hosts file.

Does it seem harder to find a simple list of IP addresses + instructions than it should be?

While Google Search results quality has gone down across the board in the last 3 or so years, it seemingly tries particularly hard to pretend it doesn't understand what you mean with queries like these.

<comment><USER11> Why would Google put itself under insane risk from anti-anticompetitve regulation and huge bad PR just to prevent a tiny minority of users from blocking google analytics?

<comment><USER12> This is hardly unusual for them; they removed the ability to blacklist sites from domains because people were blacklisting commercial sites.

<comment><USER13> Do you have any source for that? Otherwise, it's just as much conjecture as the other claim.

<comment><USER12> I recommend googling :)

</comment></comment></comment></comment></comment><comment><USER14> I wonder how long until we get an EU version of Google/Yandex/Baidu.

<comment><USER15> You mean like Qwant (French) and Startpage (Dutch)?

<comment><USER16> Quant only exists in order to receive all that sweet, sweet grant money.

<comment><USER17> All for-profit companies only exist in order to receive that sweet, sweet money.

</comment></comment></comment></comment><comment><USER18> I wonder if the GDPR had any effect, but I hope it will change things. Annoying users is better than letting the whole data hoarding keep happening.

At least california introduced a bill, too.

I'm really curious where all of this will lead to. I wonder how many people are informed that brexit and the trump election were carried by big data. I'm also curious if Obama got help from those big data techniques, I remember he used facebook, but I don't have details.

</comment><comment><USER19> Finally. Google should be broken up, they have WAYYY too much power

<comment><USER20> The problem with breaking them up is that the search engine is the whole ballgame. Separating the search engine from, say, gmail would have negligible benefit. It might even make things worse if the newly independent gmail company started doing a lot of the scummy things free email providers sometimes do to make a buck against everybody's existing gmail account.

What you really need isn't a breakup, it's some way to foster sustainable competition for search.

<comment><USER21> Search engine can be broken up regionally and the regional versions allowed to compete with each other globally. So Google France competes with Google Germany competes with Google Spain etc. This happened with Ma Bell - [https://en.wikipedia.org/wiki/Breakup_of_the_Bell_System](https://en.wikipedia.org/wiki/Breakup_of_the_Bell_System)

<comment><USER22> Would that work in this case? I'd expect that to function like a massive multi-armed bandit test, but I'd assume (without any insider knowledge) that Google already does that internally anyway?

Would it be "better" (given the regulatory goals) to order Google to do XYZ and provide an audit trail to demonstrate compliance?

<comment><USER21> Problem is new issues will keep cropping up every 2 days. And govt regulators have to keep reacting.

Putting pressure on Google requires seriously increasing competition.

Let the local units rebrand and compete against each other. Maybe even auction them off to other big players. Whatever needs to be done to even the playing field. Google need a nice kick in the ass for their own good health.

</comment></comment></comment></comment></comment><comment><USER23> Just now??

</comment><comment><USER24> Yawn. They have been "investigating" for what, a decade now? But never take any action and Google ignores them and becomes more egregious every day, because they know this. Same with Google's tax situation.

What happened to those GDPR fines of 4% of global turnover? Looked good on paper but it's an open secret now that the regulators have no teeth.

<comment><USER25> EU has fined Google €8.2B so far. Google might not have gotten the hint yet, but it's not for lack of trying.

<comment><USER26> Fines are the cost of doing business, you need to do more than that to see meaningful change.

<comment><USER17> What do you expect the EU to do, dissolving companies for the slightest infraction without giving them the opportunity to change their behavior?

<comment><USER24> I expect them to levy the 4% fine and if it's not paid start arresting senior executives. Instead they issue token fines and allow the companies to just keep appealing them indefinitely. No wonder Google's not taking these complaints even vaguely seriously, why would they?

</comment></comment></comment></comment></comment><comment><USER27> At this point, why does the EU even bother with Google? What's stopping them from just funding their own "Google" and forcing all their subjects to use them?

<comment><USER28> Because it's easier to fine US companies when they break/skirt the law. And EU citizens can make their own choices, you know. Maybe I want to use Google instead of 'EUgle' that would be censored by default under German law to prevent hate speech.

<comment><USER29> As a European I wouldn't trust any European search engine either.

<comment><USER30> I am a dual US|EU national. While I do not actually trust any search engine, I still trust Qwant and Startpage (European search engines) over ones like Google (US based). But, I almost always use DuckDuckGo.

I think of the Internet as a public utility. I think it needs to be regulated as such.

<comment><USER28> Qwant is using Bing. So much for being a genuine European search engine.</comment></comment></comment></comment></comment>


Ask HN: How big of a problem is fake news, what can we do? - <AUTHOR> I'm working on a mobile video platform that's focused on taking YouTube style broadcast and turning it into something a lot more social. Part of the advantage is greater social verification and less filter bubbles / echo chambers.
My questions are: 1) how big of an issue is this today? Can we really not distinguish truth for ourselves? Do you see this as an issue that primarily effects fringe users / edge cases or everyone? Or do you think the main issue is that it moves the Overton window? Or something else entirely?
2) what are some of the solutions you can think of?
3) what makes an environment conducive to fake news? <comment><USER2> The biggest problem today is opinion masquerading as news. If one party calls people fact witnesses that witnessed nothing and provided no facts I think you can begin to figure out who's misleading you

</comment><comment><USER3> > Can we really not distinguish truth for ourselves?

This is a key issue. Some take news at face value, never question it, and don't hesitate to spread it. Tackling this in a tangible way would be significant.

</comment><comment><USER4> Improve practical and critical thinking skills.

</comment><comment><USER5> 2) just stop reading news</comment>


The Avatar storage effect - <AUTHOR> http://www.theregister.co.uk/2009/12/21/avatar_storage_effects/

<comment><USER2> I haven't seen Avatar, but at the very least it seems to be a masterpiece of PR. I forget, now, how many articles I've seen describing every random aspect of the production. How do they manage to get these written and published?

<comment><USER3> To be honest, I am more interested in the production than I was in the movie.

Maybe this means that Avatar was done well, but I wasn't terribly wowed by anything in it. Yes, it looked real, but...so do movies that have no CGI at all.

I guess my point is that the back-end stuff from this movie is the interesting bit, so the PR is welcome.

<comment><USER4> > Yes, it looked real, but...so do movies that have no CGI at all.

Yea, but Avatar makes stuff that can't be real look real, which aids greatly in being able to suspend disbelief and go along for a ride in someone else's imagination. Movies without CGI just show me the boring real world I'm already very familiar with.

<comment><USER3> No offense, but I'm betting there are _plenty_ of boring old real things that you haven't seen yet and that most of them will blow your mind.

If this is just me, please don't tell me--being wowed by the real world is _awesome_ :).

</comment></comment></comment></comment><comment><USER5> I am not surprised Weta doesn't use Isiton. We've had nothing but problems. But they are cheap. And Aspera _rocks_.

</comment><comment><USER6> I would have used BitTorrent.

<comment><USER7> That does not seem to make sense here. BitTorrent is good for distributing many copies of a file to many clients. The large number of BitTorrent clients with full or partial copies of a given file can help transmit pieces of a file to another client requesting a download.

In their case, the producers of Avatar needed to transfer large quantities of data between two points - Los Angeles and New Zealand.</comment></comment>


The Assistant Economy - <AUTHOR> http://www.dissentmagazine.org/article/the-assistant-economy

<comment><USER2> _One problem is that the assistant's diligence cannot lead to a promotion. Technically, promotions don't exist. You can't become the person you assist, and so the strategic assistant curries favor, an especially fickle and undignified form of wage labor._

This pretty much sums up my experience in the US corporate working world, where the vast majority of senior employees are (or are nearly) senior citizens, who, for whatever reason, can't afford to (or simply refuse to) retire from the labor force. They will churn low-level employees on a two-year basis, give or take, as the employees realize to get a meaningful raise means leaving the firm. I've witnessed this in health care, finance, and other white collar environments, both first and second hand. YMMV.

<comment><USER3> I worked for a talent agency for four years, and the problem in that world is that promotions were a possibility, yet rarely given. The agency would generally hire junior agents from outside the company rather than just promoting those who had 'paid their dues.'</comment></comment>


Is SEO snake oil? - <AUTHOR> http://www.smashingmagazine.com/2011/04/12/make-your-content-make-a-difference/

<comment><USER2> Real SEO in a nutshell:

1\. Google is smarter than you. Their main project is their search engine. They almost certainly make more money then you, and they absolutely spend more money on their search engine than you would on "SEO".

2\. People use google because it finds what they want. To improve their search engine -- to make it more effective -- they make it better at finding what people want.

3\. Therefore: the best way to improve your ranking on google is to make your site something that people want to find.

That's it. It's that simple. Do you think you can outsmart google? Can any "SEO expert"? No? Then you have to play their game. The game of making your site something that real people want to find.

Sounds like a good game to me.

</comment><comment><AUTHOR> I'm interested to find out what people think of this article, especially those who sell SEO services</comment>


Ask HN: Web App or mobile native app? - <AUTHOR>

I am working on an idea and plan to put out a webapp. I feel it is a fun app and am having real hopes for it to be popular. However, I am in a predicament. Should I just build a web app and put it out or wait until I build a phone app as well ? The reason is I don't know how to build phone app, but if I do a webapp, someone could do something similar and beat me easily on execution. I am over the days when I thought idea mean much - but it simply is that I am scared of lot more talented phone developers who could spin similar app over few weekends. Appreciate any inputs or any anecdotal experience. <comment><USER2> Maybe build a mobile first web app.

If you are really wanting to provide native you could use something like PhoneGap and then you can expose to both markets.

Then if the demand was really what you expect you may have generated enough revenue by then to just get a native app for say Android and iOS built by specialist developers for not much money. If you're app is simple and catchy then it could be low cost to fund that way too.

Just my two cents of course.</comment>


Google Saves - <AUTHOR> https://www.google.com/save/me <comment><USER2> The problem I have with Google tech, especially after the new Nest stuff has to come to light, is that there's no guarantee they'll support it for very long. It's entirely possible that I'll incorporate this into my workflow, just for Google to kill it off a year later.

<comment><USER3> Should Google only work on things that it could guarantee to run for at least a few years no matter how it is performing?

<comment><USER4> Google can do what they like -- but at this point, without such a guarantee, their history shows that it would be unwise to take the time to integrate their side projects into one's life or workflow.

<comment><USER3> What do you say is the percentage of their products that disappeared versus those that still exists?

It seems like there are a lot of Google products out there that are 5+ years old.

<comment><USER5> Length of time isn't necessarily a good indicator. Google Reader ran for 7 years when they decided to shut it down.[1]

[1] [https://en.wikipedia.org/wiki/Google_Reader#Discontinuation](https://en.wikipedia.org/wiki/Google_Reader#Discontinuation)

</comment></comment></comment></comment></comment><comment><USER6> How does this work? Why isn't Bookmarks integrated?! Half-baked product that is!

Edit: Here's the Chrome Extension [0]!

[0]: [https://chrome.google.com/webstore/detail/save-to- google/meo...](https://chrome.google.com/webstore/detail/save-to- google/meoeeoaohbmgbocpdpnjklmfmjjagkkf?hl=en)

<comment><USER7> Thank you for that. I clicked on the submitted link, I got a flash of a splash page that just disappeared because I happened to inadverdently click after the page load. And then a completely empty page that tells me that I have no saves. And literally nothing else to tell me what Google product I've tripped on...a link to the extension that said, "Hey, looks like you need some saves. Install our Chrome extension!"

I'm guessing this is must be a soft launch.

</comment></comment><comment><USER8> I have a feeling this project will end up in the dust bin. I'd rather use something like Pocket, or just my browser favorites/bookmarks. Then at least I know they'll be there next year, and it's more convenient.

</comment><comment><USER9> This seems like some project manager's 20% project.

<comment><USER10> My thoughts precisely.

</comment></comment><comment><USER11> Feels like they missed a prime opportunity for Keep integration here.

<comment><USER12> I feel like this will either be integrated into Keep in a year's time, or Keep will be integrated into Saves in a year's time.

</comment></comment><comment><USER13> Yes, there's a chance that Google may can this after 2-3 years like they have countless other products. However, I can see where Google may obtain great value from this service for the foreseeable future for two reasons:

1) The tagging feature of the images you save. They are prominently displaying an "Add Tags" button when you save an image. I see tons of free nourishment being generated for their deep learning systems to digest.

2) It's just another way they will be able to gain more capital from you, Mr/Ms Google user. Do you like saving pictures of that hot band all the kids are talking about? Here's an advertisement for tickets to their upcoming concert. Are you tagging photos of homes because a move may be in your future? Here's an advertisement for mortgages. Etc.

</comment><comment><USER14> Yeah, this definitely isn't going anywhere. I do look forward to idlewords's writing about it, though.

<comment><USER15> As in [http://idlewords.com/](http://idlewords.com/)? Why?

<comment><USER16> [https://news.ycombinator.com/user?id=idlewords](https://news.ycombinator.com/user?id=idlewords)

He runs this: [http://pinboard.in](http://pinboard.in)

</comment></comment></comment><comment><USER17> I tried typing "what is this" in the search box. Maybe someone will get my message and reply back, for the next time I visit the page.

</comment><comment><USER18> Anyone can get screenshot of this page? Got 404 for me. Seems like it is prohibited in my region (Asia).

<comment><USER19> Same here (Russia).

</comment></comment><comment><USER20> Everything I learned from past years frustration with google products is that their product survival time is getting shorter and shorter. From Greader's 8 year life span to Glass'SIDS, if we plot the product survival curve maybe we can get a not so nice prediction here.

</comment><comment><USER21> Oh, look, it's like Google Notebook, except worse. Give it 18 months and they'll kill it and dump all my content into monolithic Docs documents with no tags or other metadata, just like they did with Notebook.

And what's the point of this? Isn't this what Google Keep does? Keep, Save, what's the difference? It's inevitable that they'll realize this and kill one or the other soon. And Keep has more features than this already!

If Google wants me to use any new stuff, they'd better give me a guarantee that they won't kill it for at least 3 years, with at least 1 year's advance notice. Otherwise, why bother? I've been burned too many times. Bad, Google, bad!

</comment><comment><USER22> It seems that you can search for the full text of the webpages you saved, which is the best part Google can do.

I am using pinboard at present and decide to give Google Save another try even though there is no urge need for this.

</comment><comment><USER23> del.icio.us 2.0?

I've already lost all my saves once.

<comment><USER24> Hey delicious is still around, not great, but around. In fact if you poke around in their UI (I think it was going to export) you can get redirected to one of the old UIs from before it got sold and web2.0y.

<comment><USER25> they are going back to the old version. there seem to be some pains in the reversion since some times i will go there and get the old look and then the next time i go there it will give me the "new" look. (It might be caching or something but it is inconsistent)

</comment></comment></comment><comment><USER26> Let the record show - this is how people will "bookmark". It's bringing in marked up data from the page, effectively treating websites as little interesting nuggets of data. We won't don't save links to aggregators, we save links to articles, nuggets. The UI is clunky, but it'll get better. Hierarchy is toast, and doesn't scale, welcome to your bag-of-visited-memories-websites- past.

</comment><comment><USER27> Would be really cool if the amount of times a web page is saved was factored into search results. Also would be interesting if you could make 'saves' Public or Private. This could have been the 'social' backbone to Google rather than G+.

</comment><comment><USER28> I'm sticking with Pocket. Google Saves is the equivalent of Google Keep. (I also use Evernote)

<comment><USER29> What if Google acquires Pocket?

<comment><USER28> What if Google acquired Groupon and Evernote?

</comment></comment></comment><comment><USER30> how about google save google wallet?

<comment><USER31> Hah. Wouldn't it be nice if you could put _any_ arbitrary Google service in there. Final twist would be the service that saves the services would be deprecated. All of them would disappear at once! Although I think Google trashing Google saves would be more negative publicity than usual.

<comment><USER21> Haha, I can see it now. "Do you miss some of Google's sunsetted services? Now you can relive them with Google Google. Google Google allows you to use previously offered Google services, just like they used to be!" (Fast-forward 18 months.) "All good things... Google is sunsetting Google Google, effective 3 months from today. All your data will be available in our new service, Google Google Google. Thanks for using Google Google!"

</comment></comment></comment><comment><USER32> 404?

</comment><comment><USER33> Oh, you mean Google Stop-Downloading-Our-Precious-Image-Search-Results?

</comment><comment><USER34> so basically v2 of google notebook... I loved Google notebook..too bad they discontinued that and now is back in a different form.. hope this lives on for a little longer.

</comment><comment><USER35> Why is it 404'ing?

</comment><comment><USER36> Leads to 404 for me.

<comment><USER37> Might be US-only; I was on a VPN, got 404, turned it off, got the site.

<comment><USER38> I'm in AU and it doesn't 404.

</comment></comment></comment><comment><USER39> Is this google's attempt to take on pinterest?

<comment><USER40> Nope, that's Google Collections: [https://plus.google.com/collections/welcome](https://plus.google.com/collections/welcome)

</comment></comment><comment><USER41> I just don't need ANOTHER place to save stuff.

</comment><comment><USER42> Any instructions on how to use this?

<comment><USER43> [https://chrome.google.com/webstore/detail/save-to- google/meo...](https://chrome.google.com/webstore/detail/save-to- google/meoeeoaohbmgbocpdpnjklmfmjjagkkf/related?hl=en)

</comment></comment><comment> mh- this looks useful, but I'll be hesitant to invest any time in making it part of my life.

</comment><comment><USER44> Thank You.</comment>


HTML 5 Starts Looking Real - <AUTHOR> http://www.ddj.com/web-development/219401362?pgno=1

<comment><USER2> I don't do a lot of web design but for my last two projects I was v.close to switching back to HTML4 to make the transition up to 5 easier when it's finalised. I think my next project (for myself) will be HTML5 but I can't quite bring myself to give up the XHTML ideology yet.

<comment><USER3> I was the same way honestly, but I switched back to HTML4 Strict. It's not that hard of a switch, and you can still keep your xhtml practices and write very clean layouts with it.

Here's some food for thought by Cameron Moll: [http://cameronmoll.com/archives/2009/06/coding_like_its_1999...](http://cameronmoll.com/archives/2009/06/coding_like_its_1999/)</comment></comment>


Show HN: Simple tool to get more ratings/reviews for your podcast - <AUTHOR> https://ratethispodcast.com <comment><AUTHOR> Hey everyone. I made this because I got tired of hearing _" If you enjoyed this episode, don't forget to leave us a review wherever you listen to podcasts."_

I hope this is useful to any podcasters who happen to read HN.</comment>


Selenium IDE 3.0.1 released - <AUTHOR> https://github.com/SeleniumHQ/selenium-ide/releases/tag/v3.0.1 <comment><AUTHOR> Seleium IDE now works with Firefox Quantum and has been published to the Mozilla Addons store</comment>


MIDI – Not an ideal data format for editing (2000) - <AUTHOR> http://www.bikexprt.com/cakewalk/midiprob.htm <comment><USER2> The bigger issue is that MIDI is reasonably good for keyboard instruments but it sucks at almost everything else. So as long as you look through the lens of a keyboardist you might think the only problems with MIDI are related to the fact that it isn't ideal for editing but the real problems go much deeper. If you feel the analog controller bits are the issue that's closer to the truth, but music is about as analog as it gets and any attempt at digitization will lose some expressiveness.</comment>


Secret Morse code tune sees game removed in China - <AUTHOR> https://www.bbc.com/news/blogs-news-from-elsewhere-53488011 <comment><AUTHOR> As someone who learned Morse code in Junior High enroute to becoming a ham radio operator it brightens my spirit seeing it used this way. However few people know Morse code these days (fewer than those who know how to use a stick shift) all it takes is one to tattle to the authorities.

What the Chinese authorities never seem to understand is no matter how hard you crack down there are those who wish freedom for China will always be there, willing to risk their life to achieve it. Sooner or later those wanting freedom, against all odds, will win.

<comment><USER2> > Sooner or later those wanting freedom, against all odds, will win.

North Korea would like words with you.

<comment><USER3> It isn't over until the fat lady sings as they say. Anything can still happen with North Korea. Personally I imagine a revolution of some sort to be rather much more likely than North Korea somehow being the first eternally stable state in the world.

<comment><USER2> So how does freedom, as you put it, win?</comment></comment></comment></comment>


IE6 – The End is Near - <AUTHOR> http://clubajax.org/ie6-the-end-is-near/

<comment><USER2> Not exactly. If you target designers and developers, you'll have much lower IE6 market share. If you target enterprise users trapped by a fearful and incompetent IT department, it'll be much higher.

<comment><USER3> We are stuck in an environment just like that. It's at least 5-10 years before all those are updated. The only hope is for the actual machines to fail and have to get replaced.

What a short-sighted article. People forget about the B2B enterprise world and those who service it.

<comment><USER4> _People forget about the B2B enterprise world and those who service it._

Bob Martin[1] claims that was one of the reasons Smalltalk died[2].

1\. <http://en.wikipedia.org/wiki/Uncle_Bob>

2\. <http://blip.tv/file/2089545>

</comment></comment></comment><comment><USER5> In near future, after IE9 has been launched, every major browser has (sort of) CSS3/HTML5 support. To prevent IE7 & IE8 becoming the new "IE6" for the next half decade, it's important to let them die. As a web developer, prefer graceful degration over pixel perfection. Let everybody access the content, but require a modern browser for eye-candy. People will upgrade (even corporations!), if they were not given another option.

</comment><comment><USER6> IE6 usage is now below 5%? Wow, it's so cool to be part of such an exclusive club. Thanks Boss for keeping our organization on the bleeding (trailing) edge.

</comment><comment><USER7> Depending on the kind of website you are making, you could ditch Internet Explorer 6 a long time ago.

Only three percent of all visitors used IE 6 when visiting a website for a academic conference (social science, German speaking countries) I made. Also, Firefox was nearly three times as popular as all versions of Internet Explorer combined. And that data is now already half a year old.

<comment><USER8> It's not only kind of website. There are also huge geographical differences.

I cringe whenever I hear "Opera has <1% market share (period)", because in my part of the world it has nearly 10%, and reaches 40% in some countries.

[http://people.opera.com/dstorey/images/OperaMarketShareEE.sv...](http://people.opera.com/dstorey/images/OperaMarketShareEE.svg)

</comment></comment><comment><USER9> Wow, a site with "Ajax" in its name that, _on load_ , presents the user with a confirm() dialog that redirects them to the Flash install page? — while there is an unpatched critical zero-day bug being exploited in the wild? There is a reason I have Flash disabled!

(Also: My site, which is geared toward OS X users and web developers, has 2% IE6 traffic.)

</comment><comment><USER10> Wow, it's down to 5% for us. Just 6 months ago it was 10% or so. Revenue from IE6 is just under 5% as well.

</comment><comment><USER11> On a commerce website I help with, 6% of the visits in the last 30 days are IE6, which is 7% of the revenue. Those numbers are about 50% of what they were during the same period last year.

As an interesting note, the site still has a user on IE5.01 that orders every few months.

<comment><USER12> >the site still has a user on IE5.01 that orders every few months

Are they ordering new valves for their computer?

</comment></comment><comment><USER13> My wife works at some huge company, and is so forced to use IE6. Apparently Google Maps and many other useful websites don't work anymore and crash the browser (No, I didn't care enough to check :). So yes, the end really is near.

<comment><USER14> I heard that some companies actually like the fact that mainstream sites don't work in IE6 now, as it reduces the time employees spend fribbling around on the internet. Of course, anywhere competent would find a better way to screen traffic.

</comment></comment><comment><USER15> Govt site in the UK I deploy onto is still 18-13% depending on the area of the site. Education is a late bloomer.

</comment><comment><USER16> For those who miss IE6 there is always <http://ie6ify.com>.

</comment><comment><USER17> 63% IE users on Woobius. about 11% of that (i.e. 6% of the total) are IE6 users.

Die, IE, die!</comment>


Bob Seger Music now available on streaming services - <AUTHOR> https://www.usatoday.com/story/life/nation-now/2017/06/16/bob-seger-music-streaming/403500001/ <comment><AUTHOR> an update to [https://news.ycombinator.com/item?id=14278565](https://news.ycombinator.com/item?id=14278565) this thread from two months ago, Seger's music is now available on streaming services.

       A representative for Seger said Friday's move was prompted by growing fan demand
       and urging from the streaming companies, some of which indicated he was now
       their most-requested unavailable artist.</comment>