US Defense Secretary: Snowden Caused Tensions with Techies - <AUTHOR> http://www.wired.com/2015/04/us-defense-secretary-snowden-caused-tensions-techies/ <comment><USER2> > US Defense Secretary: Snowden Caused Tensions With Techies

No. Egregious and unconstitutional surveillance, and lying ( _lying_!) to Congress and the people, caused tension with "techies."

If you don't want something exposed, don't have something that could be exposed.</comment>


New low level JavaScript interpreter to boost WebKit performance more than 200% - <AUTHOR> http://www.appleinsider.com/articles/12/03/01/new_low_level_javascript_interpreter_to_boost_webkit_performance_more_than_200.html

<comment><USER2> I really can't stand AppleInsider. Their articles are _constantly_ written this way. What does Oracle's patent suit against Android or the Dart VM have to do _at all_ with Apple's improvements to their JavaScript engine?

> _Google's efforts to leverage Chrome to push its own preferred technologies > rather than open standards has also occured with its own WebM video codec > (as opposed to H.264) and a prioritization of Adobe's Flash (over HTML5) for > delivering video and interactivity, particularly as a differentiating > feature of its Android mobile platform._

I seriously don't even know what to say to _any_ of that, especially the Flash bit. I can't tell if I should be attributing this to malice or stupidity. I think I've flagged two things ever, and this will be the third.

Here's the original bug/enhancement report with actual information and not some ignorant fanboyisms: <http://trac.webkit.org/changeset/108309>

<comment><USER3> Actually, the articles by this one particular author are noticeably worse than others on the site.

Even aside from the slant, the headline trumpets over 200%, while a x2.5 speedup is actually a 150% improvement. And that is only the interpreter part. The article itself mentions that overall speedup is only "double digit" i.e. roughly 10-15%.</comment></comment>


Ask HN: How to reach out to industry experts - <AUTHOR> It seems as though the key to alot of startups succeeding and differentiating themselves from the competition gets glazed over in the retelling of their story's. SpaceX started after Elon organized a conference of top experts in the field. While Elon may have had 'influence' due to his previous exits, how would a person starting a company in a field reach out to people outside of his/her network? Example scenarios/ 'reach-out' emails would be greatly appreciated! <comment><USER2> Tim Ferris makes his living doing it, in the four hour chef you will learn DiSSS & CaFE that teaches how he does his work which will answer your question.

If your looking for more online course.

Try Ramit Sethi's How to talk to anybody or Instant+Network.

As with any successful relationship, it's starts with creating a value or usefulness to the other-side. The two above will help you with that....

</comment><comment><USER3> Have you considered the possibility that - if you don't have anything to offer them - you're doing them a disservice?

If you're not prepared to offer money, connections, collaboration, or anything of value, it sounds like you just want someone to validate your idea for free.

Beg them, I guess?

</comment><comment><USER4> Hello, I'm starting a business in $field and would love to hear your insights. I'll pay you $dollars for a quick chat.</comment>


Dear Lennart, the FOSS community is not evil – it depends on you - <AUTHOR> http://www.nico.schottelius.org/blog/attitude-of-the-foss-community-a-matter-of-perspective/

<comment> vezzy-fnord I too thought Lennart's diatribe was a little awkward. It's not that Lennart didn't have valid concerns (though I personally think all this drama over Linus is getting cliched), but he just seemed to have a total lack of self- awareness. Imagine if Ulrich Drepper wrote a rant on sloppy management back when he was still maintaining glibc. He may or may not have been correct, but it'd be very hypocritical if he didn't acknowledge that to an extent, he's a part of the problem.

Moreover, some of his examples left me unconvinced. I could only find one petition sardonically suggesting for him to stop developing "useless" software, however... another counter-petition later ended up emerging in his support ([https://www.change.org/p/lennart-poettering-continue- writing...](https://www.change.org/p/lennart-poettering-continue-writing- useful-programs)). In addition, Ulrich Drepper has received _plenty_ of bug reports that all scolded his behavior, and even Linus Torvalds was the subject of a petition concerning removing RdRand from /dev/random. Point is: controversial people are controversial.

He then goes on to mention the website about boycotting systemd. It's fairly obvious that systemd is a highly controversial piece of software, so arguments against it are expected. I agree that the presentation is pretty off-putting and confrontational, but I didn't see any "personal attacks".

However, the part about hiring a hitman through Bitcoin _really_ caught my attention. That does sound awful, so I decided to look into it a bit.

As it turns out, the story is actually much more tame. What happened was that a few Maemo developers on IRC were angry over the Consistent Network Device Naming feature of udev, trash talked a bit and then went on to different technical topics. After some irrelevant fare, the topic was raised again with the timestamps between 18:21:51 and 20:04:59.

There is no grand plot to kill Lennart. In fact, the word "Bitcoin" was mentioned only once. It's a bunch of developers acting facetious and trash talking, and it's all absolutely baseless. I have no idea why Lennart brought it up. Logs can be found here: [http://logs.nslu2-linux.org/livelogs/maemo/maemo.20130215.tx...](http://logs.nslu2-linux.org/livelogs/maemo/maemo.20130215.txt)

Ultimately, I think the whole thing is blown out of proportion, and what worries me is that all this will pretty much end up silencing criticism of systemd even further.</comment>


WTF Is Big O Notation? - <AUTHOR> https://rob.conery.io/2019/03/25/wtf-is-big-o-notation <comment><USER2> (Warning: nerd sniping incoming)

The main problem with this article is that it doesn't stress (or even mention, as far as I can tell) that it's performance characteristics _at the margins_. Meaning, it's about a generalized operation on a very large data set. Your fancy hashing algorithm might be slower than just doing a linear scan over a 10-element table, not to mention the maintenance of your tree structure. In the article, this is most obvious in the following sentence:

"Let's say we have 1000 records in our film table. To find "Academy Dinosaur" our database will need to do 1000 operations (comparing the title in each row)."

No you don't. If your table is sorted, you'll need only 1 operation to find 'Academy Dinosaur', because it's your first element. What _does_ happen is that _on average_ , to find any title, you will need n / 2 operations (so not 1000, but 500, in this example - this part is plain wrong as it's written). Of course, n / 2 is linear in n, so the complexity stays the same. But my point is that to understand big O notation for real world impact, you _first_ need to understand the concepts the article mentions, _and then_ you also need to be able to accurately assess the lower-dimensional terms that are left out, and estimate them.

(preempting counter sniping: this is assuming that titles are unique)

(to put this in other words, an algorithm or data structure operation described as being 'O(n)' could really be 'O(n) + x' where x is a constant; but we leave that out because at the margin, it doesn't matter (i.e. is dwarfed by the O(n) term. But when n is small and x is large, x becomes dominant, so assessing the effects of the complexity, in the real world, need to keep the expected magnitude of n in mind.)

<comment><USER3> > What does happen is that on average, to find any title, you will need n / 2 > operations (so not 1000, but 500, in this example - this part is plain wrong > as it's written).

You're conflating theta and omega notation for big O. Big O is the worst case scenario. The average or even typical operation doesn't matter. If the algorithm is the most complex when sorting a list of items that were already sorted in descending order, then that is the use-case that is considered when figuring out Big O. If you want average, use Big theta.

<comment><USER4> No, this is also inaccurate. Big-theta and average-case complexity are entirely different concepts.

Big-O/theta/omega are all ways of _categorizing functions_. Those functions typically take as their argument some measure of the "size" of the input (which may be one variable or multiple). The output of the function could be:

* worst-case performance ("largest possible running time for all inputs of size N")

* average-case performance ("expected running time for an input of size N, chosen from some well-defined distribution")

* amortized performance ("largest possible running time among all possible sequences of N inputs, divided by N")

(We could also apply any of these definitions to something other than time, such as memory or I/O operations.)

For _any_ of these definitions, we can talk about big-O, or big-theta, or big- omega in a well-defined way.

As an example, the worst-case time complexity of bubble sort is Ɵ(n^2). The average-case time complexity (assuming an input consisting of distinct elements, uniformly randomly permuted) is also Ɵ(n^2). Nevertheless, the best- case performance is Ɵ(n).

</comment></comment></comment><comment><USER5> That was a good write up, and it will help people. I come from the self taught side, and find that it is critical to know these things when you work in certain areas of a code base and once you reach a certain level. But I don't expect everyone needs to have the same level of understanding.

I also find interviewers asking detailed questions about Big O and specific different algorithms just idiotic, especially the esoteric ones I've been asked in the past and/or heard asked. When I interview someone, all I want to know is that you know there is a difference and know to look when it matters.

My method for learning if a candidate understands this all is to get people to choose data structures based upon different problem sets I will give them and then ask the pros and cons. The more questions they ask about usage usually the more they understand in my experience. And this is just way more informative as a hiring manager as you will learn more if they understand what they are saying, versus if they can regurgitate something they memorized from a book or website.

<comment><USER6> Having for the most part avoided the computer science department during my earth science education, this is helpful.

I have sort of an intrinsic idea of what's going on -- self-joins can easily compare a data set with every other member of the data set, and hit O(N²). And that if your N is 5, the DB will probably going spend more time parsing SQL than executing your query, so no point in optimizing. So I don't understand or care about what the definition is, but it's useful tool to think about how slow your code can be.

</comment></comment><comment><USER7> This seems like a good time to bring up one of my pet peeves about big O notation.

Every theoretical model I've ever seen says that indexing into n bits of memory takes O(1) time. That's obviously impossible:

\- The pointer you need to read is log(n) bits.

\- The physical memory is at best O(n^(1/3)) distance away from the CPU, and thus takes that much time to get back to you. In reality it's probably O(n^(1/2)) because we build on flat planes (once you start talking about petabytes of data anyways).

Maybe this doesn't matter in practice, because the constants associated with these are small enough (but are they, how many memory/disk bound applications are there? How much extra performance could we squeeze out by using 16/32 bit pointers for small arrays?). It certainly doesn't matter in theory where things work like we say they do regardless of the physical reality. But it annoys me that it's so obviously wrong.

<comment><USER8> Part of it is that there's very casual, conversational usages of Big O vs. much more formal usages when trying to actually quantify performance.

Conversational Big O tends to include a lot of spherical cows ([https://en.wikipedia.org/wiki/Spherical_cow](https://en.wikipedia.org/wiki/Spherical_cow)), because when Big O comes up in conversation, people are more likely to be talking in generalities about high level designs. More detail could be counterproductive in that context.

When someone is actually trying to quantify and predict performance of an algorithm, then the other extreme becomes desirable- the more detailed and specific the function, the better.

<comment><USER7> Ya, I'm directly addressing non-conversational use of Big O notation here, including the areas of academia I'm familiar with and know people in.

</comment></comment></comment><comment><USER9> My experience, as someone who isn't a professional full-time developer (systems engineer / devops focused), but who personally geeks out on CS theory, is I find it fairly rare for developers that I work with that think of Big O considerations when writing their code.

A prime example, was a piece of code that has to process incoming results that get stuck in a transnational database table. Instead of selecting, then processing, the records that the module cares about, it does the selection (which typically returns 1 - 10 records), sorts them, processes the record from the top of the list, then throws the rest of the initial select results away. It then goes back to the DB an does the same select, and repeats the process.

End result: if the queue gets backed up to 100, or 1000 records, the process never catches up. You have to temporarily change the status of the inbound records to something else, then put maybe 10 at a time back to pending.

There are countless other times I've seen similar types of issues where on small data sets the code runs fine, but the performance degrades to n^2, or even worse is when it degrades in a factorial manor. And the worst of it is that if I talk to the developers using common CS notation (such as, your algorithm should have logarithmic or at worse linear degradation as the input queue grows, and it is behaving exponentially), their eyes glaze over.

<comment><USER10> That's not my experience as a software engineer at all. In fact, I would say that I see people worrying about writing algorithms that are asymptotically optimal (well before that should ever be a consideration) 10x as often as I see people failing to consider the efficiency of the algorithms they write.

<comment><USER9> Do you think this is due to a difference between working at a place that has software requiring a specific non-computer related skill set (such as medical diagnostics software), vs being at a place that hires primarily CS grads for regular software? Other developers that I've worked around at previous jobs were in manufacturing (Informix 4GL devs), and an IT services company, among others. The one common thread I've seen though is they tend to be impressed by what I can do in C, for example, or helping them get to the root of an issue they have (I will typically reverse engineer what they are doing from the outside looking in, using things like strace, then writing up an analysis of what I see from the systems side).

Another recent example is a case where the app needed to start a number of sub-processes. So the dev used an equiv of a system() call, which spawned a bash shell, to do a ps -ef |grep process_name |grep -v grep |grep -v vi |grep -v vim |grep -v less, to see if the process was running, then doing another system() call to start the sub process. The whole string would be repeated for each sub process, and then they wondered why it took 8 minutes to start all their sub interfaces when they deployed to a larger customer that needed 700 interfaces started (instead of the typical 20 - 50). Oh, and after they would start an interface, the code would do the "ps..." commands on all the other interfaces to update an internal table on their status.

<comment><USER10> That might very well be there difference. My coworkers are almost exclusively people who studied CS, and several wrote C professionally at some point.

</comment></comment></comment></comment><comment><USER11> It's a great post and everyone stop flexing. Learn basic complexity if you don't know it, it has huge dividends.

</comment><comment><USER12> >"My rule of thumb here is that if I have to use a loop within a loop, that's O(n^2)."

This might potentially do someone a disservice. The whole point of analysis is just that - to "analyze" the runtime and not resort to "rules of thumb."

The presence of nested for loops itself is not a good reason to declare something quadratic. Consider the following which is most certainly not O(N^2):

for (int i = 0; i < 1000; i++)

      for (int j = n; j >= 1; j = j / 2)

        // do something

EDIT: initialized j to the val of n on the inner loop per the comments below.

<comment><USER13> Well, as written, it is 'O(1)'. Or did you mean to put N instead of 1000?

<comment><USER12> The inner loop is log(N), it halves the value of J after every iteration. The "do something" was meant to stand for a constant time operation so that it's N log N. But my point was really that if you told an interviewer that it was O(N^2) simply because it contained nested for loops it would be a very clear sign that you didn't fully grasp Big O.

<comment><USER14> Nah, every algorithm that is O(N logN) is also O(n^2). That would be a sign, that you as an interviewer didn't fully grasp Big O.

<comment><USER12> Nah "f(n) is said to be in O( g(n) )" formally speaking but practically speaking an algorithm in some production code that runs in O(n log n) vs one that runs in O(n^2) are not the same thing at all.

That would be a sign that you as a candidate are being needlessly pedantic and usually a red flag.

<comment><USER14> You're confusing O with Theta.

<comment><USER12> No I am most certainly not. Nowhere did anything I said in the comment above indicated I was referring to both a lower AND upper bound which is Big Theta.

Honestly it sounds as if you might not understand the difference between Theta and O. I understand that a function that is O(N^2) grows no faster than O(N^3) asymptotically speaking however the intention of my original comment and example is quite clear about their context.

Please stop, you are adding nothing to the discussion.

<comment><USER15> You most certainly are confusing O with Theta. O is just an asymptotic upper bound. Of course a function that's bounded by n lg n is also bounded by n^2.

<comment><USER12> No I am not. The other commenter inexplicably and needlessly decided to introduce Theta and assert that I was confused.

Maybe you might reread my original comment. This whole side discussion is of no value to my original comment which has a very clear and very narrow context.

I am not sure why the both of you want to belabor some ancillary talking point that you yourselves decided to introduce. It is of exactly no value to the context of my original comment and not in the least bit productive.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> > I don't want to turn this into a Redis commercial, but I will say that it > (and systems like it) have a lot to offer when you start thinking about > things in terms of time complexity, which you should! It's not premature > optimization to think about Big O upfront, it's programming and I don't mean > to sound snotty about that! If you can clip an O(n) operation down to O(log > n) then you should, don't you think?

The thing is, I don't care about 'time complexity', I care about performance. Big O can serve as a useful datapoint for what the performance may be, but it's only that, one data point. e.g. It's not uncommon to find that a 'worse' algorithm/data structure in Big O terms will out perform a 'better' one because the 'worse' one has better cache locality. So no I don't think you should use an O(log n) operation in place of an O(n) operation just because of Big O, what matters is which one is faster.

<comment><USER17> OP here - Big O notation is simply shorthand math. When you're discussing things in this way, time complexity and performance are the same thing. When you care about resource usage (memory etc) that's _space complexity_ , which is different. Either way, they're good things to understand.

>So no I don't think you should use an O(log n) operation in place of an O(n) operation just because of Big O, what matters is which one is faster.

Mathematically the log n is _always_ faster :). Realistically... well that would be a tough one to prove, even with caching, but I say go for it.

<comment><USER16> > time complexity and performance are the same thing

By definition, they are not.

> Mathematically the log n is always faster :)

No, it's not. Time complexity only gives you an asymptotic bound on the number of 'operations', it tells you nothing about what the actual run time will be.

<comment><USER17> I believe we're talking past each other. Big O has _nothing_ to do with "actual run time*. It doesn't care what about the number of inputs you have - just that you have them.

Mathematically, if n=1000 then log n is 10. 10 operations vs. 1000 is, theoretically and time complexity wise, faster.

Our disconnect is "actual" vs. "theoretical" and I want to stress again that Big O is purely theoretical. It's a technical adjective.

</comment></comment></comment></comment><comment><USER18> Formal definition from my ancient copy of Sedgewick:

 _A function g(N) is said to be O(f(N)) if there exist constants c₀ and n₀ such that g(N) is less than c₀f(N) for all N > N₀._

Continuing: "Informally, this encapsulates the notion of "is proportional to" and frees the analyst from considering the details of particular machine characteristics. Furthermore, the statement that the running time of an algorithm is _O(f(N))_ is independent of the algorithm's input. Since we're interested in studying the _algorithm_ , not the input or the implementation, the _O_ -notation is a useful way to state upper bounds on running time which are independent of both inputs and implementation details."

I'll also repeat this bit from the end of the analysis chapter:

Perspective:

Many of the algorithms in this book have been subjected to detailed mathematical analysis and performance studies far too complex to be discussed here. Indeed, it is on the basis of such studies that we are able to recommend many of the algorithms we discuss.

Not all algorithms are worthy of such intense scrutiny; indeed during the design process, it is preferable to work with approximate performance indicators to guide the design process without extraneous detail. As the design becomes more refined, so must the analysis, and more sophisticated mathematical tools need to be applied. Often, the design process leads to detailed complexity studies that lead to "theoretical" algorithms rather far from any particular application. It is a common mistake to assume that rough analyses from complexity studies will translate immediately to efficient practical algorithms: this often leads to unpleasant surprises. On the other hand, computational complexity is a powerful tool for suggesting departures in design upon which important new methods can be based.

One should not use an algorithm without some indication of how it will perform. [...]

</comment><comment><USER19> A precise way of being imprecise.

</comment><comment><USER20> The formal definition is a fairly gentle introduction to logical math. Here is a decent enough write-up: [https://justin.abrah.ms/computer- science/understanding-big-o...](https://justin.abrah.ms/computer- science/understanding-big-o-formal-definition.html)

</comment><comment><USER21> I mostly don't think about it too much. If I have a piece of code that seems slow I make it less complicated and mostly look up the big-O. Reason is that I only had a few time in my 20 year career that I really had issues with this.

<comment><USER22> True, after a few years of experience you recognize pitfalls to avoid. I remember figuring this out on my own as a kid writing a chat client, years before learning O terminology. As the number of clients reached ten performance dropped and quickly realized I needed to handle the situation more efficiently and did.

Doesn't provide the smug satisfaction of using the academic notation/jargon given in tech interviews and hn threads however.

</comment></comment><comment><USER23> I really like the post, I think it is very intuitive. However, it was a bit confusing at the end. Consider these scenarios: (1) looking for an item in you cart using a hash, and (2) looking for an item in the whole databse using a hash. From the article, I assume that (1) is O(1) because of the hash, but for (2) it is O(log n). Maybe I am confusing a hash and an index. If so, what is the difference?

</comment><comment><USER24> Oh ffs another article about Big-O without the actual definition anywhere in it. Put it at the end after motivating it, put it at the beginning and then explain it, I don't care. Just actually give it at some point.

</comment><comment><USER25> This is legitimately a good post.</comment>


JavaScript Is Eating the World - <AUTHOR> http://arc.applause.com/2015/11/06/javascript-is-eating-the-world/ <comment><USER2> So, what do we think of Parse's cofounder and his cheerleading for JavaScript?</comment>


Android Oreo - <AUTHOR> https://www.android.com/versions/oreo-8-0/ <comment><USER2> The most interesting part is the way they are planning on tackling fragmentation in O onwards with Project Treble [0]

If your device ships with O it should be running an immutable semantically versioned HAL. In essence you should be able to be able to flash AOSP on every new device. No matter what the vendor does.

Edit: I can see it now, in the technical specs of each device you will see a list of HAL Versions. The newer your HAL the longer you can expect support from AOSP if not your vendor.

[0] [http://androidbackstage.blogspot.co.uk/2017/08/episode-75-pr...](http://androidbackstage.blogspot.co.uk/2017/08/episode-75-project- treble-for-hal-of-it.html)

<comment><USER3> Android have been promising to finally tackle fragmentation in every release since KitKat. It seems people have a very short memory.

<comment><USER4> I think they did a great job at reducing fragmentation by pulling out most of the OS into upgradable components.

All applications are upgradable, even Play Services are upgradable, and developers get the support library to get all the new things to all devices.

So I believe they did a great job at reducing fragmentation in the sense that it no longer really matters what version you have, you still get all the newest stuff. Just look at every iOS version announcement: 3/4 of the new features are in the apps: iMessages, maps, home screen...

<comment><USER5> > by pulling out most of the OS into upgradable components.

That's not true (the most of the OS part). They untangled their own stuff (Play Store, Google services and so on) and can update those as they see fit. The OS stuff is still monolithic. Most of serious security issues still require full OS updates. Also supporting a new major version of Android runtime still require a full OS update.

<comment><USER6> Most security issues are handled by security updates, which don't require a letter update. They're issued as patches, so OEMs can issue them for an older device without updating it to a new release. [https://www.android.com/security-center/monthly-security- upd...](https://www.android.com/security-center/monthly-security-updates/)

<comment><USER7> They can, but most don't.

<comment><USER6> Most of the major OEMs do. The security update rate for upper tier phones runs about 75% within 3 months these days.

Anyway, I was responding to the comment "Most of serious security issues still require full OS updates." This is demonstrably inaccurate since the security patches do not require a full OS update.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Project Treble is the most important thing in this release

>The biggest change to the foundations of Android to date: a modular architecture that makes it easier and faster for hardware makers to deliver Android updates.

With any luck, this will end the huge security/update problem Android has. Right now an update is dependent on the chip manufacturer's drivers, then the OEM adding them to the ROM with their custom "improvements", and finally the carrier pushing the update to devices. Right now it just takes one break in the link and a device goes without updates, which is a security disaster. If Google can push updates from the Play Store (presumably the end goal of Treble), none of this will be a problem.

<comment><USER7> As I commented in another HN story, I don't believe OEMs and telecom operators will release updates, if Google doesn't force them to do so.

They already admitted on the ADB Podcast that they don't want to remove the ability for OEMs and mobile operators to customize their forks of Android.

We will still be forced to buy new devices even if they are VTS certified.

<comment><USER2> > VTS certified

If it passed VTS it should be able to run AOSP. The new CTS will be an AOSP System image running their VTS passing "drivers".

Even if your vendor doesn't push any updates. At least you should be able to run a number of newer versions of AOSP as long as Android doesn't deprecate those VTS drivers.

<comment><USER9> How in practice would you go about putting AOSP on a device without the vendor cooperating? Is there some kind of secure boot system that always accepts AOSP images?

<comment><USER10> I think the idea is that they cooperate once, and then Google promises to stop breaking the HAL interface for x years at the cost of increasing their development difficulty.

</comment></comment></comment></comment></comment><comment><USER11> Not saying that everything else is bad, but one thing that strikes me is how much they have run out of interesting things now that they had to use fillers[1] like:

 _Tooltips_

 _Support for tooltips (small popup windows with descriptive text) for views and menu items._

Normally, this would be relegated to a git changelog in the support library. But this is on the global marketing landing page.

I like to imagine a fictional internal mail thread going like this:

> _Folks! please, give us something, anything, to put on the landing page!_

> Someone replies _duh, maybe tooltips_

> _What 's a tooltip?_

> _uhh, small popup windows with descriptive text_

> _What 's a popup window?_

> _uhh..._

> _Nevermind, its on!_

Obligatory /s and yeah its Google, but seriously I can't imagine any other circumstances on how this specific copy, which tries to explain what a "tooltip" is by using the words "popup window", "view" and "menu item", came up.

This could be a good sign though, of the maturity of the platform (and harder to feel left out if you didn't upgrade).

1: [https://www.android.com/versions/oreo-8-0/](https://www.android.com/versions/oreo-8-0/)

<comment><USER12> How do tooltips even work on a touch based OS?

<comment><USER13> Chrome OS has first class support for Android apps nowadays. You can use a keyboard and mouse through USB OTG or Bluetooth on an Android as well.

<comment><USER14> Something that has been with Android since 3.0.

Really wish i could find an android tablet with a full size A port these days that didn't run a ancient version...

</comment></comment></comment></comment><comment><USER15> Am I the only one who's really disappointed by the platform's shift in its stance on background execution? I was originally drawn to Android because it wasn't iOS. I wanted to develop on a platform where I _could_ run a service in the background if the user wanted that. Apps that were bad stewards of battery life and phone resources were supposed to be scrutinized by users and removed if they were too poor. You _can_ be a good steward, it's just harder especially when your monolithic app is an uninformed port of some legacy iOS code.

By issuing a hard restriction on background usage Google has brilliantly improved battery life for the masses while condonig the same lazy architectural patterns of the past, locked people into Firebase Cloud Messaging--a Google service not part of the AOSP, and potentially stunted Android adoption in domains outside of mobile. It's the turning of an era for Android, and my interests have moved elsewhere (from an app platform perspective, embedded Android is still vialble since everything you ship runs as a system app with no restrictions).

<comment><USER8> That might be good for power users, but for the average user it's a disaster. How many people actually read the app permissions when they install something? Most apps request background privileges and if you don't like that your only other option (until recently) was to not install the app.

Users blame Android when Facebook and other popular apps started eating all their battery by running in the background. Google's only choice was to aggressively punish these apps.

All developers think their app is the most important thing running on the user's system, and that is how we get into situations like this.

<comment><USER15> Yeah I understand why we're in this situation. I'm lamenting the fact that it's reached this point. Maybe I'm a minority but I don't think my apps are the hottest shit around and I try to make an effort to be a good steward. IMO engineers should push back when product asks for things that clobber system resources. However the few bad examples should not ruin it for the use cases where you really do need something running in the background. I also partly blame these DI solutions that encourage devs to stuff everything in a graph they do or don't realize is tied to their application instance. I've seen this multiple times in production apps.

<comment><USER16> What are these apps doing in the background? I've always assumed they're collecting/streaming device and user metrics. Running apps, location, WiFi SSIDs, etc. If that's the case, then a reduction in data collection could mean a reduction in metrics/income.

<comment><USER14> Its a mix of things.

Android by design leave apps in the background when you exit them via the home button.

Before 4.0 introduced the switcher button, and the accompanying swipe action to fully close an app, the only way to properly exit an app was to hit the back button until you exited back to the home screen.

This because the initial design of Android was less about apps and more about "activities". These were the individual parts of an app, and what enables that one app launch parts of another app to complete a user action (the most prominent likely being the share menu).

This was presented back in the day as a metaphorical stack of cards. As more user actions where taken that opened more activities, those activities would be added on top of the stack. Then as the user hit the back button he would be flipping backwards in that stack. To enable all this, Android keep apps around in RAM until it runs low, and then start to close down the oldest ones (first by waking them up and telling them to exit gracefully, then forcing them).

Thus often an app will sit in the background even though it is doing nothing.

One good way to observe this (until recently) was to run something like OSMonitor and look at CPU time of various app processes. Often they would be present but basically show no indication of actually doing anything. They would just sit there idle, waiting for user actions.

</comment></comment></comment></comment></comment><comment><USER17> Has Google ever released a report on how much time it takes an average flagship device to get the latest android version? Even if you've paid $$$$ in getting Samsung Galaxy S8 just recently, you're not going to get Android O tomorrow morning. But that's definitely the case with iOS. That makes a huge difference in the world where Software updates play a huge role in performance and functionality than hardware update (read. Image processing vs 13Mp to 16Mp camera) Google hasn't been successful in that.

<comment><USER18> Just like you have to buy an Apple phone to get Apple updates immediately, you need to buy a Google phone to get Google updates immediately. Pixel and Nexus rollout is starting nowish (and beta participants are already getting the OTAs).

This is really not a secret at this time anymore and should be taken into account when you succumb to Samsung marketing.

Everybody else will be probably 4-6 months late.

<comment><USER19> But Apple supports iPhones for 4-5 years. Google has said they will only support their flagship Nexus and Pixel phones for no more than 2 years. For a $700 device this is unacceptable.

<comment><USER20> Apart from what Ironlink said below, there's also the fact that Google and Apple support mean different things.

For Apple, updates often mean some subset of the full operating system updates, or a crippled version.

Whereas Google updates tend to be all of nothing - meaning if your phone does get the update, it gets _all_ of the features of that particular version.

This seems to have changed somewhat with moving a lot of the stuff to Play Service (and now obviously with Project Treble), so you get the best of both world (in theory)...

<comment><USER21> > For Apple, updates often mean some subset of the full operating system > updates, or a crippled version. Whereas Google updates tend to be all of > nothing - meaning if your phone does get the update, it gets all of the > features of that particular version.

Eh? Aren't you swapping something here? On Apple you get OS updates with nearly all features for at least 5 years, of course they can't create a NFC device into a phone that doesn't ship with one... I would love to see _any_ Android phone with support for 5 years, that does not come from google directly. it would be a no brainer if something exists in the 200-300€ range. because I don't care which phone I have, it just needs to be long liveable and have a price below 400€. currently I use used iPhones, which I get relativly cheap.

<comment><USER22> I think he's pointing out a vital difference in update paradigms here. Taking an example of an update that added NFC processing to a phone, iOS devices would get the update even if NFC were the only feature in it and their device didn't support NFC (and that feature would just be turned off or "crippled"). Android users, on the other hand, just wouldn't get the update at all.

In reality, what we see is a bunch of features bundled together into a single update. If one of those features is NFC functionality, iOS phones will get that update minus NFC (and any other features their hardware doesn't support), while Android phones often just won't get that update at all if any of the features (e.g. NFC) aren't supported by the hardware. This also explains, in a basic sense, why iOS devices get updates for longer periods, while Android devices "fall off" or aren't promised updates for as long.

There's, of course, pros and cons to each of these update strategies, as many times it becomes "mandatory" to update (for security updates, to get maintenance/support, to get some other necessary features, etc), and iOS-style updates have historically been too much for device memory/processing/resources to handle (effectively making the phone so slow you're required to buy a new one[1]), while Androids not getting the update at all also requires you to buy a new one.

Neither approach is foolproof, but I think that's what he's referring to by "Google updates tend to be all or nothing" and "Apple updates often mean some subset of the full operating system updates, or a crippled version".

[1] There's enough resources out there that no single one tells the whole story, but there's plenty at [https://www.google.me/search?q=ios+update+made+phone+unusabl...](https://www.google.me/search?q=ios+update+made+phone+unusable) and at least one previous class action lawsuit over iOS updates rendering phones "inoperably slow".

</comment></comment></comment></comment></comment></comment><comment><USER23> I know this is a non-issue for many, but those emojis look really dated. Every update they get harder and harder to read in small form. One of the things I observe, mainly on Instagram Stories is only people with iOS post with emojis attached, I never see Android ones. Too bad there is no way to install custom emojis in any system (without rooting/registry tweaking), like we do with fonts.

<comment><USER24> Personally, I find it kind of ridiculous that new emojis are considered flagship features of mobile OS updates. I'd think that it would be possible to decouple emoji updates from kernel/security updates, so I imagine that Android/iOS tie them to the OS updates solely as a way to motivate non- technical users to update.

<comment><USER25> Mobile OS's aren't just for grumpy old people.

<comment><USER24> I'm younger than emojis themselves, to be perfectly honest, but I hardly think that an (incorrect) ad hominem makes my point any less valid.

<comment><USER26> Emojis have no relevance to how technical someone is

<comment><USER24> Exactly, they have appeal to people independent of technical skill; hence my hypothesis that they make sure to emphasize the things that are more likely to resonate with larger groups of people (like emoji) rather than things like Project Treble or a "native C/C++ API for high-performance audio", even if the former really have little to due with the OS itself.

If we're going down that route, it's also worth noting that "old people" such as GP referred to also can like emoji; my parents and grandparents enjoy using emoji.

</comment></comment></comment></comment></comment></comment><comment><USER27> Does Google pay these candy companies to use the name or do they pay Google?

There's obviously _some_ contractual relationship but I can't figure out who's on which end of it.

<comment><USER28> Would they need to pay them? Cookies and mobile phones are completely different lines of business, right?

Though the name is a direct reference to the sweet, so that maybe makes it more complicated.

<comment><USER29> Oreo's probably a "famous mark" and therefore qualifies for dilution protection, and this would be pretty in line with what "dilution by blurring" is considered to be. Not that it would come to anything, but there is something there.

They made a deal with Nestle/Hershey for KitKat, so I'm sure they did here as well.

</comment></comment></comment><comment><USER30> The awful scroll hijacking implementation on this page really distracts from the content.

<comment><USER31> Yeah I tried scrolling down to see if it had any information regarding how or when this update would be released to their own phones and the scroll was just all over the place.

I really wish everyone would stop hijacking scrolling.

<comment><USER32> Enroll in the beta to get the release version (on Pixel).

<comment><USER31> Thanks; it took way too long to figure out this was the path (maybe the release version is rolling out soon? I see zero indication anywhere).

</comment></comment></comment></comment><comment><USER33> Android has really been annoying me lately. Maybe I didn't care before but now that I can't root my phone I am forced to deal with it.

Still can't disable or customize to stupid "share" menu that puts you one click away from accidentally sending something to a stranger you contacted once on sms or facebook messenger or email.

Still can't revoke certain permissions from apps (like vibration). There is zero reason why my browser should need to ever vibrate or use the accelerometer/gyro.

Still no good system wide ad blocking solution. (not likely, but one of the biggest things I miss from having a rooted phone)

How about those superpowers, Google? I have been an Android user since 2010 but I am quite sure my next phone will be an iPhone (with a headphone jack).

<comment><USER34> So you're upset about not having enough niche power-user knobs, so you're going to a device that has basically zero power-user knobs? How does that make any sense? Why not just flash an AOSP-based ROM that does what you want, which Google officially supports for their devices?

<comment><USER35> Exactly. I need to customize, so I'll go to Apple, the most user-infantilizing software company on the face of the planet, world-renowned for their repeated refusal to let users tweak the user experience of their $1000 phones on the grounds that some people in a board room in Cupertino know what's best for you better than you do.

<comment><USER36> They usually know better. I've been iPhone user for 6 years and I've never wanted to customize something. Android, on the other hand, would need a complete customization, redesign and rewrite which I don't have time to do.

</comment></comment></comment></comment><comment><USER37> > Android Oreo helps minimize background activity in the apps you use least, > it's the super power you can't even see.

I'm looking forward to this. It seemed to me in the switch from iOS to Android that the battery life definitely suffered. I wish the Samsung Galaxy's "ultra power saver mode" was available in more devices. The "battery saver mode" in my current Android phone is decent but doesn't seem as effective.

> Integrated printing support

> Compatible with all Mopria-certified printers, which make up 97% of printers > sold worldwide.

Gee, I've never heard of "Mopria" but this sounds interesting.

<comment><USER38> >Gee, I've never heard of "Mopria" but this sounds interesting.

97% of printers sold now - the initiative happened in 2014, and I assume that it took manufacturers a few years to ramp. So probably don't expect it to work with your 5 year old all-in-one.

<comment><USER39> If it supports prior services like Google cloud print, perhaps even uncertified printers could work

<comment><USER34> Cloud print has been supported since KitKat, you just need to install the driver (sorry, "print plugin"): [https://play.google.com/store/apps/details?id=com.google.and...](https://play.google.com/store/apps/details?id=com.google.android.apps.cloudprint)

<comment><USER39> Yeah, I meant the printer, not the phone/tablet.

</comment></comment></comment></comment></comment><comment><USER40> All I want is for my stupid phone to stop annoying me with new features I don't want. Google just now suggested with a notification that I should ask its voice thing a question and try it out.

Every time I think I've blocked every $_#&#- thing that annoys me, more show up. As of a week ago I now get these Throw notifications that cannot be dismissed or blocked.

I also despise apps that insist on being updated and disallow being uninstalled.

These itches are so bad now that I'm pretty disenchanted with Android altogether.

I want a no nonsense phone that literally does nothing out of the box except the app store and make phone calls.

<comment><USER41> Give me a phone like you describe that also doesn't track you and I'm sold.

<comment><USER42> It's called an iPhone: [https://www.apple.com/iphone/](https://www.apple.com/iphone/)

<comment><USER40> Can I uninstall all the apple apps be that come with it?

<comment><USER43> Most except safari

<comment><USER44> And you can kill that under "restrictions" if you want to...

</comment></comment></comment></comment></comment></comment><comment><USER45> Wondering if the following feature is enabled by default:

"Wi-Fi Assistant

Auto-connects you to high quality open WiFi and secures your connection with a VPN back to Google."

I _really_ do not want to tunnel my _whole_ traffic through Google's servers.

<comment><USER46> I don't know if it is on by default but if enabled it will connect to "High Quality" open networks. If it does this it connects the VPN.

So the VPN is "required" by this feature but you can turn it off globally, or manually connect to networks where you don't want to use the VPN.

<comment><USER16> Doesn't this violate the computer fraud and abuse act, for unauthorized accessing to a networks without permission? More specifically, piggybacking [1]?

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

</comment></comment></comment><comment><USER47> I know programming within the constraints of mobile devices isn't easy and I want to take nothing away from the release, but when you are still used to Desktop computing it's kind of funny to see how seemingly trivial nice to have features like picture-in-picture or notification dots get all hyped up in the press release.

<comment><USER48> Does desktop have good PIP? It obviously matters much less when you have multiple monitor, but I'd love to see OS level PIP support on desktop. Aka, have a video "always on top" in the corner that I can move around and resize while browsing the web, all on the same monitor. Some programs have "always on top" support but there's nothing OS level.

<comment><USER49> Window Managers like KDE and Gnome have workspaces and window pinning (shown as "Show on all workspaces") for decades.

Windows 3.1 was able to have two windows side by side before Android even existed.

</comment></comment></comment><comment><USER50> "new emoji" is an OS-level feature now. Welcome to 2017.

<comment><USER51> Well, there was a lot of distaste for the previous style, it's a pretty notable difference to users. (For the record, I liked the original "blobs" and will miss them.)

<comment><USER48> I'm fairly sure anyone who has actually had a proper look at the new emojis much prefers the old ones. And I'm not talking just about the blobs (which were only a small fraction of the emojis), but rather the overall style with the gradient and border, and the drawing for the animal emojis too.

</comment></comment></comment><comment><USER52> Really sad about the loss of the blob emojis. Will probably have to root my phone to use a third party emoji switcher app to preserve them.

<comment><USER53> And it's not that the new emojis are all necessarily bad. My issue is confusion over what the recipient will see when I select one of the new emojis. I'm still not 100% clear on the emoji set mapping between OEMs/OSes. :-/

<comment><USER54> Isn't that one of the points of the new emojis, though? That unlike the previous ones, they're compatible with what other systems use.

<comment><USER49> If emoji are in Unicode, why can't I choose how to represent then? Isn't that the job of the font?

If you want total control over what the recipient sees, send an image.

It would be like if a webpage requested Helvetica and you are using Linux the text simply wouldn't render.

<comment><USER54> > If you want total control over what the recipient sees, send an image.

Is this for real? You rather people have to stop using emojis and send images in their stead, than the different platforms give them the same meaning?

<comment><USER49> They have the same meaning, namely the one encoded in Unicode.

Just because different platforms have different fonts does not charge they meaning.

An "a" in Helvetica has the same meaning as in Times New Roman, but the glyph is different. "" means the same thing, even though I inputted it as the Android yellow blobs, I see it as a simple black and white symbol and an iPhone user reading this will see another different image.

<comment><USER54> When people look for an emoji in their phone's keyboard to express something, they don't read the Unicode description for that emoji. When people receive them, they don't read the description either.

Thus why it's important that, even if they don't have the same style across platforms (like an 'a' in Helvetica and in Times), they have to depict the same thing.

For example, if from your HTC phone you send a smiley that looks pretty content and calm, users of most other platforms will receive it as "I'm freaking sick of this". The meaning encoded in Unicode for it is "face with look of triumph" ( [https://emojipedia.org/face-with-look-of- triumph/](https://emojipedia.org/face-with-look-of-triumph/) ), which isn't what you meant, nor what your receiver understood.

</comment></comment></comment></comment></comment></comment></comment><comment><USER55> "Coming to a device near you"

Yeah, but not on my device. I didn't even get Android 7 :)

<comment><USER56> It says "a device near you", not "your device". ;)

<comment><USER57> Isn't his device the nearest near device to him?

<comment><USER58> Technically, "a device near you" != "the device nearest to you".

</comment></comment></comment></comment><comment><USER59> Going to take advantage of an Android thread here to ask something that has driven me crazy for ~3 years:

How do I disable "pop-down" notifications? i.e. facebook messenger, on receiving a message, drops down a little message box from the top with that message. It stays there for about 2 seconds and then disappears... unless further messages in that chat appears.

The only way I can disable this is by muting that chat, which is not ideal. Same for Hangouts and other messaging apps. It drives me insane.

<comment><USER60> Swipe a notification to the side a little bit, and you get a gear icon. Tap that, and you can set that app's max allowed notification importance. You can block all notifications, relegate them to only being visible when you pull down the notification bar, or allow normal icons but not "peeking" notifications.

<comment><USER48> Yep, there's a new feature in Android O that gives you full control over notifications. You can have them make a sound and pop up, only make a sound, make no sound, or not show up at all. And you can set that per app, and even per notification type if they are targetting O api

</comment></comment></comment><comment><USER61> I have an HTC One M8 which I purchased in summer/fall of 2015. The phone works great but it makes me sad that I am still on Marshmellow and the phone is no longer supported.

lately I have been been wishing there is a way I can just run some version of linux like debian/fedora on my phone and be able to run apt-get update and upgrade (or yum) as updates are released.

IIRC it cost $600, and technically it does more than I need, but the fact I am becoming more and more concerned that security updates are not being received is making me call into question I actually want a 'smart' phone.

I understand android is based on linux but it is above my head to compile this realease on my own and it is difficult for me to trust rooting the device if there was an option to install oreo on htcone m8 with my 'old' chipset.

any thoughts? did I miss any truely 'free' linux smartphone OS that I would be able to use?

<comment><USER62> I also have a One M8; mine is currently rooted and running CyanogenMod. (I keep meaning to update to LineageOS but haven't gotten around to it yet.)

Rooting is nice, and I believe it's important from a philosophical standpoint, but I probably won't with my next phone because the features I want are getting built into the OS, and I am missing several apps that just refuse to work when they detect they're running on a rooted phone. (Everything from games to my work email.)

It definitely increases the longevity of phon but, while it mostly works, it has lots of little quirks - especially with the various radios. E.g. I occasionally have to re-pair bluetooth devices, wi-fi will disconnect and then re-connect for no apparent reason, etc. Also, sometimes I just find it getting warm in my pocket and I have to reboot it to make it snap out of whatever endless loop it's stuck in. (I assume that updating to LineageOS will fix a few bugs and introduce a few others.)

I'm going to replace it with either the next Pixel or the next iPhone when they both get released in a month or two, depending on which one I'm more impressed with. I am going to miss my headphones jack...

<comment><USER63> The only reason I root my phone any more is for an adblocker. Which the iPhone conveniently has built in... It will probably be my next phone.

<comment><USER62> Yea, I use Firefox + uBlock Origin on Android, which doesn't require root, so I'm covered there either way. (Annoyingly, the regular Firefox on iOS doesn't _yet_ support adblocking, but I think that will be changing soon.)

<comment><USER64> Browsers on iOS are just wrappers around safari. Apple doesn't allow 3rd party browser engines. So you will never see feature parity on iOS.

<comment><USER62> Yea, I know; and to make matters worse, there's no way to apply Safari content blockers to other browsers on iOS.

But, Firefox Focus has a built-in adblocking and I believe that feature will come to regular iOS Firefox sometime soon.

</comment></comment></comment></comment></comment></comment><comment><USER11> Not saying that everything else is bad, but one thing that strikes me is how much they have run out of interesting things now that they had to use fillers[1] like:

 _Tooltips_

 _Support for tooltips (small popup windows with descriptive text) for views and menu items._

Normally, this would be relegated to a git changelog in the support library. But this is on the global marketing landing page.

I like to imagine a fictional internal mail thread going like this:

> _Folks! please, give us something, anything, to put on the landing page!_

> Someone replies _duh, maybe tooltips_

> _What 's a tooltip?_

> _uhh, small popup windows with descriptive text_

> _What 's a popup?_

> _uhh..._

> _Nevermind, its on!_

Obligatory /s and yeah its Google, but seriously I can't imagine any other circumstances on how this specific copy, which tries to explain what a "tooltip" is by using the words "popup", "view" and "menu item", came up.

This could be a good sign though, of the maturity of the platform (and harder to feel left out if you didn't upgrade).

1: [https://www.android.com/versions/oreo-8-0/](https://www.android.com/versions/oreo-8-0/)

<comment><USER11> (for some reason my comment got double posted, pls ignore this dupe, other comment is somewhere on top)

</comment></comment><comment><USER65> Nice Marketing coop for an OS where 50% of devices won't get updates.

I don't get it. They bring frequent major updates with such important features like 60 new emijis or antivirus software instead of just doing their homework and implementing the number one feature for an OS: Direct OS updates from the OS vendor and nobody else.

Don't tell me it's a problem and the driver situation is so difficult. This is just a bad excuse. They want to keep people buying new Android phones.

<comment><USER66> This release introduces Project Treble with the goal, I believe, of fixing this exactly this problem.

<comment><USER65> I don't think it will solve the problem because they still want the hardware makes to distribute updates.

</comment></comment></comment><comment><USER67> > Native C/C++ API for high-performance audio. API function for high- > performance audio including Native C/C++ audio API.

I wonder if this will be good enough to close the gap with the rich music creation ecosystem on iOS.

<comment><USER68> I sure hope so.

Google has been a gold-level sponsor the last couple of years at the JUCE Summit/Audio Developer Conference with a motivation to push developers in the direction of the Android NDK. It's good they acknowledge they are behind it that regard, but there's still a fair amount of catching up to do considering there's now AUv3 on iOS and no competing standard on Android yet.

</comment></comment><comment><USER65> > that makes it easier and faster for hardware makers to deliver Android > updates.

They still don't get it. Google as the OS vendor should update all phones and NOT the hardware makers. Hardware manufacturers can still update their special features on the side after an OS update got deployed but I want that the OS and its core become updates directly and only from Google. Why is this so hard?

<comment><USER69> Google doesn't want to bear the cost of testing and releasing updates for all of the hardware. Most Android manufacturers barely manage to break even (or outright lose money) trying to sell and support Android hardware. (Samsung makes money, most others don't.)

Blaming the OEMs for your security issues is free.

<comment><USER65> I don't think that MS tests all hardware when updating Windows. Sometimes some hardware doesn't work after an Windows update and then you just head to the respective hardware manufacturer and try to get updated drivers. This model could work for phones too. Google updates and maybe my S8's camera is not working anymore but at least we have secure and patched phones. And the good thing is: Samsung has to quickly fix the broken camera, so you create a totally different urgency.

But Android is an odd OS, we will never see a proper update policy from them.

<comment><USER69> It depends what we're talking about. Specifically with ARM processors, it isn't trivial to add drivers separate from your OS deployment. Microsoft DOES work with (and update) third party hardware directly for Windows 10 Mobile devices. And this is true for their third party phones from HP, Acer, etc. as well.

(Note, I have a Windows Mobile device from 2014, and I still receive the latest security fix on Patch Tuesday around 1 PM, every month.)

<comment><USER65> > ARM processors, it isn't trivial

This is what they tell us for decades. You can just disable parts of an SoC if no driver is available. This is just an architectural decision Google is not willing to address.

And ARM reference designs from a handful of manufacturers are not that different.

<comment><USER34> > You can just disable parts of an SoC if no driver is available.

So you want Google to ship updates where parts of the hardware just stop working? That sounds fucking awful, no thanks.

And yes ARM's ecosystem has largely still not standardized on self-discover or self-configuration because they have no incentive to. They just hardcode whatever configuration they need and call it a day.

</comment></comment></comment></comment></comment></comment><comment><USER70> Don't let the project treble eclipse the limitations imposed over background services,

Android seems to have taken iOS approach towards saving power,

"When an app goes into the background, it has a window of several minutes in which it is still allowed to create and use services"

Though iOS's background restrictions goes up to socket level (e.g VPN, which android O seems to have whitelisted entirely); this is going to be a huge impact over consumers and of course pain in the __* for developers.

</comment><comment><USER71> Has google forgotten how to do great marketing?

You open the page. Scroll down. What should be the first thing you see? Obviously it should be the greatest, the best feature of the new OS. What is it instead? "Quick boot up time". Really? That's the best thing in Android Oreo? That when I reboot my phone once every 4 months, it's going to start quicker? Surely they could have picked literally anything else as the first thing to mention?

</comment><comment><USER72> A lot of people complaining about using a brand name here -- isn't Kitkat (the 'K' release) also trademarked?

<comment><USER73> That was a cross promotion, this probably is as well. Google is an ad company.

<comment><USER74> Yes, Oreo is trademarked, and Google has licensed it from Nabisco.

[http://www.androidauthority.com/android-8-0-oreo- announced-7...](http://www.androidauthority.com/android-8-0-oreo- announced-794621/)

</comment></comment></comment><comment><USER75> Android has been improving so much in the performance department I think the phone that will replace my aging S3 will be... another S3 if I can find one.

Seriously. Software has improved so much but the hardware nowadays is trash for my needs at least.

<comment><USER76> Uh? I replaced my S3 by a S7 and the hardware changes are huge: better CPU obviously but also much better screen (the S3 was unreadable during sunny days..)

<comment><USER75> Can you replace the battery with an extended one?

That's a deal-breaker for me, and battery cases are not a good replacement since I can't rely on the phone's own battery indicator, have to manually turn on/off and looking at ZeroLemon's case for the S7, it seems to require a headphone extender.

As for the S3's screen I have no complaints. It's readable in the sun with max brightness, I keep it at minimum the rest of the time.

Finally, the S7's native screen resolution is 1440p, meaning it will munch on battery much faster for no perceptible gain (at the distance I hold my phone). And manually lowering the resolution will render a blurrier image than native 720p so that's out.

<comment><USER77> I'm using an S7 edge and it's on the default 1080p resolution. It's not blurry at all. The difference in quality between this screen and the screen on S3 is very noticeable. The non removable battery is the only downgrade I see. Everything else is a huge leap forward. Even battery life is much much better. You likely would not need an external battery.

<comment><USER75> I'd have to see it for myself. My 4k laptop makes me gouge my eyes out in 1080p mode.

As for the battery life you mention, that's probably just the Android upgrade. I've easily doubled my battery life in 3 major Android version upgrades. 10-15 days (depending on usage) is normal now with a 7000mAh battery.

</comment></comment></comment></comment></comment><comment><USER78> Would be nice if they added a switch to disable connecting to open wifi networks. Or at least to realize that the wifi is connected but its waiting for a sign in so internet traffic should still be routed through 4g.

<comment><USER14> Used to be that Android distinguished between connected wifi and a internet connection by trying to reach a Google server or something.

At least my 4.x tablet used to have a 3-state wifi icon, off (not present), connected (gray), internet (blue).

<comment><USER79> I would love to have something like this. When I call an Uber/Lyft as I am walking out of my apartment, it always takes forever for the WiFi to disconnect, long after it has lost internet connection. So I constantly get the "Unable to Connect to Network" error, and I have to turn off WiFi and restart the app to actually call a ride.

If anyone knows of a solution to this problem on a Galaxy S8 I would love to hear it.

<comment><USER77> What you're experiencing is different. The WiFi still has internet access, your signals aren't reaching the AP. The phone has no way of remedying this without switching to LTE very aggressively. I'd assume that would cause unnecessary battery drain and unneeded switches for many people.

That said, I haven't needed to restart the uber app to fix this. I just disable WiFi from the notification toggle and the app connects in about a second after that.

</comment></comment></comment></comment><comment><USER80> "Auto-connects you to high quality open WiFi and secures your connection with a VPN back to Google."

Hmmmm. So Google can have even more of your data.

</comment><comment><USER81> So according to the release the new features are:

-Picture in picture (dual app onscreen)

-Notification dots and "force-touch-like-feature" (my words, not Google's) to preview

-Google Play Protect (an antivirus) [0]

-Minimize unintentional overuse of battery from apps in the background

-Faster boot speed

-Support forAndroid Instant Apps

-Over 60 new emoji (sic)

Under the hood stuff, not in the release (thanks u/izakus)

\- Project Treble that splits hardware HAL layer away from the OS layer. Plan being that this allows updating the OS without having to update the whole hardware driver stack (and thus avoid being dependant on Qualcomms of the world to update their proprietary blobs for each release) \- GPU drivers are now updatable via Play Store (by OEMs)

More new features listed on the main Oreo page [2]:

-Accessibility button: Allows you to quickly access from the navigation bar accessibility features, like magnification, and functionality within accessibility services, like Select to Speak.

-Accessibility volume: Accessibility services can optimize the audio experience for users with disabilities.

-Adaptive icons: Developers can now provide a full-bleed square shaped icon and OEMs will mask the icon to ensure intra-device consistency.

-Ambient screen: Highlights the incoming notification with larger font, highlighted app name and immediate access to actions.

-Background execution limits: More control over how apps run in the background for better overall system performance.

-Background location limits: Limits the frequency of location updates in the background for better overall system health.

-Deep color: Enables applications to render richer visual content with more vibrant colors and subtler gradients. Supports full color management which allows applications to render images in the format and quality they were intended.

-Downloadable fonts: Applications no longer need to bundle custom fonts, which helps reduce their size.

-Install unknown apps: Hostile downloader apps can't operate without permission; users now permit the installation of APKs per-source.

-Integrated printing support: Compatible with all Mopria-certified printers, which make up 97% of printers sold worldwide.

-Linkable files: API that allows you to share files across the Internet via web links.

-Native C/C++ API for high-performance audio: API function for high-performance audio including Native C/C++ audio API.

-Notification categories: More granular and consistent control over which notifications can appear and how intrusive they are.

-Notification snoozing: Lets users hide notifications for a period of time, similar to Inbox snoozing.

-Pointer capture: Pointer capture allows the app to capture all mouse input.

-Project Treble: The biggest change to the foundations of Android to date: a modular architecture that makes it easier and faster for hardware makers to deliver Android updates.

-TextView autosizing: Developers can now let the size of their text expand or contract automatically based on the size and characteristics of the TextView, making it much easier to optimize the text size on different screens or with dynamic content.

-Tooltips: Support for tooltips (small popup windows with descriptive text) for views and menu items.

-Wi-Fi Assistant: Auto-connects you to high quality open WiFi and secures your connection with a VPN back to Google.

[0] [https://www.android.com/play-protect/](https://www.android.com/play- protect/)

[1] [https://developer.android.com/topic/instant- apps/index.html](https://developer.android.com/topic/instant-apps/index.html)

[2] [https://www.android.com/versions/oreo-8-0/](https://www.android.com/versions/oreo-8-0/)

<comment><USER82> Where did you see that it has "force touch" to preview? I can't find that information in any of the links.

<comment><USER81> Sorry, they where my words, and a poor choice, I have updated that point. The feature I was referring to is this:

Notification Dots: Press the notification dots to quickly see what's new, and easily clear them by swiping away.

</comment></comment></comment><comment><USER83> > Compatible with all Mopria-certified printers, which make up 97% of printers > sold worldwide.

I wonder if every Mopria-certified printer prints anti-privacy tracking dots.

</comment><comment><USER84> Seems like the most notable part of this release will be the emoji upgrade :-P Rustaceans will appreciate the crab

<comment><USER85> The crab is a must.

</comment></comment><comment><USER86> Instant Apps: I think this can impact very positively the environment but there are almost not mentions to it.

<comment><USER77> Environment? How so?

<comment><USER86> You don't need to have all apps installed. For example: you can go to facebook web page and launch an instant app, so you have the native experience without having the app installed. Also with places like amazon or anything that you don't use very frequently. Moreover you can test an app without installing it.

<comment><USER77> Ok I get that you don't need to install all apps. But again, how does it affect the environment?

<comment><USER86> that you don't have to install apps to use them? Like you go to a web page and can have native experience, with its animations and everything. Much better than a web experience.

</comment></comment></comment></comment></comment><comment><USER87> Please use a PNG for the emojis image... it's so painful to see the JPEG halo/bleeding artifacts...

<comment><USER88> How can you send time constructing such a fancy webpage, and not notice that jpeg mess?!

</comment></comment><comment><USER89> Quite excited by the "high-performance audio API". Could drive a different consumer segment.

</comment><comment><USER90> Not related but does Google have to pay Oreo money for using its name/image?

</comment><comment><USER31> This seemed like the best choice in name and yet I wonder if they'll draw the same ire from the community as they did when choosing Kit Kat.

Honestly I like it; it was better than basically all the other alternatives.

<comment><USER91> No, it wasn't :) [1]

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

</comment></comment><comment><USER92> A non-generic brand name for their O-release? Did they strike a deal with Nabisco/Cadbury? I can't imagine Google doing this without some form of legal go-ahead from the trademark owner.

<comment><USER93> Of course. Would be interesting to know what the exact quid pro quo is for deals like this though (who pays whom, and how much, etc.).

<comment><USER94> Yeah, I wonder which brand benefits more from this. I would imagine Oreo since there are far more cookie brands than mobile OS's.

<comment><USER95> At first I thought so too, but the brand dilution that is going to happen has to have some negative penalty.

Oreo will receive "free" marketing, but now will have to share the name with a version of a mobile OS.

</comment></comment></comment></comment><comment><USER7> >Google Play Protect:

> Working to keep your device and data safe from misbehaving apps by scanning > over 50 billion apps per day, even the ones you haven't installed yet!

Also known as anti-virus.

<comment><USER96> [https://www.android.com/security-center/](https://www.android.com/security- center/)

This page says 8 billion a day, which seems inconsistent. Also how many apps are there on the Play Store to scan that many?

<comment><USER97> It checks the apps on the device. Considering the amount of Android devices with Google Play Services that number seems consistent.

</comment></comment></comment><comment><USER98> > "Native C/C++ API for high-performance audio"

This is good to hear. But, this makes me wonder about Android's ability to prevent people from pirating apps. Due to the nature of Android, I've never wrote an app that wasn't free.

On iOS, there are a number of audio apps that do quite well. I'd be hard pressed to port an app to Android, if taking the apk was as easy as it's always been.

</comment><comment><USER99> So, it was announced during the eclipse (dark and bright). It's called Oreo which is the same but they still didn't bother with a dark mode?

</comment><comment><USER100> >> Swift moves, behind the scenes

Translation: we developed better compression algos for uploading your personal data to our servers

</comment><comment><USER101> > Wi-Fi Assistant: Auto-connects you to high quality open WiFi and secures > your connection with a VPN back to Google

VPN back to Google?

</comment><comment><USER102> I wonder if the visual play of the Oreo mimicking a solar eclipse on the homepage [1] is a coincidence, seeing as how it was released on the 21st.

[1] [https://www.android.com/versions/oreo-8-0/](https://www.android.com/versions/oreo-8-0/)

</comment><comment><USER103> I'm looking forward to Google finally allowing PiP to work in the YouTube app on iOS...

<comment><USER14> Say hello to the MAFIAA...

</comment></comment><comment><USER104> My experience with my Android-based TV is that every Android update and every update of Google's own apps (e.g., YouTube) is a regression is so many totally unnecessary ways that it almost seems deliberate at this point.

</comment><comment><USER105> I remember being excited about new Android releases. Boy times have changed.

</comment><comment><USER106> This looks interesting:

"Linkable files: API that allows you to share files across the Internet via web links."

Will this mean that I don't have to download a pdf to view it? I wonder what this feature means.

<comment><USER107> I am still wondering what it is. Theirs no documentation.

</comment></comment><comment><USER7> Not on my LG and Asus devices, no sir.

And I don't believe OEMs and telecom operators will release updates even with Treble, if Google doesn't force them to do so.

</comment><comment><USER108> Reminds me of a windows release.

Except that, if mobile OS's could still disrupt the desktop, there's still many features to go?

</comment><comment><USER109> Did google forgot how to design web pages?

</comment><comment><USER110> I love the intro video of Android Oreo launch as they used the context of Solar Eclipse on 21st August.

</comment><comment><USER111> Too bad most Android devices will never get this update. This is where Android sucks compared to iOS.

</comment><comment><USER112> FYI Oreo Battery Life on the Nexus 5X is really bad. Don't upgrade if you have one.

<comment><USER113> Really? By how much? Since when were you using the developer previews?

<comment><USER112> Dev previews for over a month - 1/4 to 1/2 less battery time. Same with the release - perhaps a tiny bit better.

</comment></comment></comment><comment><USER114> Express yourself in more ways than ever: Share the feels with a fully redesigned emoji set, including over 60 new emoji.

[http://nedroid.com/2014/08/phone-home/](http://nedroid.com/2014/08/phone- home/)

</comment><comment><USER115> classic hacker news thread on new tech: i only learned negative things.

</comment><comment><USER116> Finally Android will stop Facebook apps from sucking my RAM secretly!

<comment><USER39> I've found a fantastic solution that works on any phone! Uninstall facebook and facebook messenger. Then use Chrome and facebook's mobile site. Life changer, man.

<comment><USER46> I haven't had much problem with FB Messenger, and it's app is more useful then the mobile site.

However the main app is a total dog and the mobile site is quite complete. Would definitely remove it.

</comment></comment></comment><comment><USER117> New EMOJIS? O-M-G finally! I've waited so long!

</comment><comment><USER118> I love doing "Two things at once, at once."

</comment><comment><USER119> Why on earth did they go with a restricted trademark, Oreo?

Oreo must have payed a good sum of money I suppose?

Coming up with the legalese on how and where Google is allowed to use the Oreo trademark seems difficult.

<comment><USER120> Does INTERCONTINENTAL GREAT BRANDS LLC have a trademark for Oreo in the "computer and scientific" or telecommunications categories?

If not, then there is no trademark issue. Google isn't selling a food, it's selling an operating system.

<comment><USER121> Only they're marketing it with oreo cookie mascot, look at all the material. I highly doubt you can just do that.

It's the same with kit kat, they probably couldn't just use that, either.

But it's a win-win for both parties, I doubt either of them paid.

<comment><USER122> They can't, without permission.

The logical conclusion is that they have permission, not that one of the largest companies in the world made a legal mistake that the "We Are Not A Lawyer"s on HN can see right through... for (at least) a _second time_. Keep an eye out for Oreo packages with Android branding material on them, in the style of: [http://cdn.redmondpie.com/wp- content/uploads/2013/09/kitkata...](http://cdn.redmondpie.com/wp- content/uploads/2013/09/kitkatandroid1.jpg)

I do find myself curious what the negotiations look like when Google wants to not just use Oreos, but _not_ slather all their material with "Oreos are a registered trademark of blah blah blah", which is pretty unusual.

<comment><USER123> They definitely had permission. Android was cross marketed on Kit Kat bars as well, e.g.: [http://assets.nydailynews.com/polopoly_fs/1.1444541.13782299...](http://assets.nydailynews.com/polopoly_fs/1.1444541.1378229930!/img/httpImage/image.jpg_gen/derivatives/article_750/google- kitkat.jpg)

</comment></comment></comment></comment></comment><comment><USER124> These scroll to reveal sites have to die now.

</comment><comment><USER125> The easter egg is the worst ever.

</comment><comment><USER126> > Swift moves, behind the scenes

Seriously?

</comment><comment><USER127> All these releases are meh... I'm waiting for the Reese's release to bite

</comment><comment><USER128> Don't name Android versions after brands. Now we're stuck with 2 (k,o)

<comment><USER129> feel the same!

</comment></comment><comment><USER130> mjjhmmj .

</comment><comment><USER131> For people complaining they cant get this, it's their own fault. People keep buying carrier phones knowing fully well the problems with locked, bloated androids. Either just buy unlocked phones that you can control or face the consequences.

</comment><comment><USER132> I don't like the product placement in the release name.

<comment><USER133> If by "product placement" you mean that Nabisco paid Google for this, I doubt that is the case. If anything, the money would have gone the other way.

<comment><USER134> I see there seems to be a dearth of common, easy o-names, but is the name _that_ valuable, and they refused to punt to "orange _______"?

</comment></comment></comment><comment><USER135> "Allows you to see two apps at once, it's like having super strength and laser vision." really

</comment><comment><USER136> As a half-black, half-white man, I find this name incredibly offensive. #halfblacklivesmatter

I'll leave it up to you to figure out if I'm serious or not (and yes, I really am mixed so this is plausible).

<comment><USER137> I think from a certain point of view, "Oreo" could be a great compliment. It is an explicit association with everyone's all time favorite candy snack... (fuck off if it is not yours).

Sincerely,

The Marketing Manager at Nabisco

<comment><USER136> So I get to be eaten alive under the pretense of being a delicious snack treat, cool.</comment></comment></comment>


The Seven Wonders of the Coding World - berserker-one https://medium.com/p/the-seven-wonders-of-the-coding-world-ad104ee0937c <comment><AUTHOR> I'll upvote any thread that mentions Forth. I have nothing but good memories of rolling my own RTOS.

</comment><comment><USER2> Fair warning that the linked article about Javascript has a pretty NSFW lead- in image.</comment>


A few useful things to know about machine learning (2012) [pdf] - <AUTHOR> http://www.cs.washington.edu/homes/pedrod/papers/cacm12.pdf

<comment><USER2> There are a few criticisms that can be made of this paper, it tries to cover a lot of ground in a small space, has rather informal language, and possibly more, but these can be forgiven as it's a generally informative and entertaining piece.

For me, the largest omission is the lack of reference to theoretical limit of Machine Learning. That is, what can't be achieved even if you assume infinite resources and algorithmic complexity. It's important for me as this paper appears to be a damn good stab at being a comprehensive review of why machine learning projects fail, except for missing this critical point. The idea is best explored in the book What Computers Can't Do (H.Dreyfus, 1972), recounted in the book What Computer's Still Can't Do (H.Dreyfus, 1992), and well summarized in A History of First Step Fallacies (H.Dreyfus, 2012) [1]

Finally, any paper that's freely distributed, can be enjoyed over lunch and includes the phrase "most of the volume of a high-dimensional orange is in the skin, not the pulp" is fine in my book.

[1] - [http://link.springer.com/article/10.1007%2Fs11023-012-9276-0](http://link.springer.com/article/10.1007%2Fs11023-012-9276-0) [PDF]

<comment><USER3> The abstract was intriguing. It's a shame you have to pay to read the rest of the paper.

</comment></comment><comment><USER4> _8\. FEATURE ENGINEERING IS THE KEY_

 _Feature engineering is more difficult because it 's domain-specific, while learners can be largely general-purpose ... one of the holy grails of machine learning is to automate more and more of the feature engineering process._

This is the goal of deep learning, and more generally, representation learning: automatic discovery of explanatory features from large amounts of data. I'm surprised it wasn't mentioned.

<comment><USER5> This is a paper published in 2012. Deep learning wasn't mainstream at the time of writing it (probably 2011-2012).

<comment><USER6> Machine learning has been full of methods for learning latent feature representations since way before deep learning was trendy, from simple things like PCA to more sophisticated Bayesian models. Deep learning refers specifically to using multi layer neural models and while neat is only one way of doing it and certainly didn't invent the whole concept of learning feature representations as recently as 2012!</comment></comment></comment>


Is Yik Yak Popular at All Colleges Now? - <AUTHOR> http://wojdylosocialmedia.com/yik-yak-college-students-using/

<comment><AUTHOR> It is huge at UNC, where I do to school, is it popular at other colleges and universities now?</comment>


Bitcoin is worth more than all UK pound sterling notes and coins in circulation - <AUTHOR> https://smallbusinessprices.co.uk/bitcoin-vs-currencies/ <comment><USER2> Most monetary systems are really based more on faith than worth or value.</comment>


Show HN: Handl – a tool to label and manage data for machine learning - <AUTHOR> https://handl.ai <comment><AUTHOR> Greetings, HN! We are thrilled to introduce you Handl, a tool to label and manage data for machine learning. Handl employs 25k qualified crowdworkers from developing countries who help tech companies to deal with data preparation and get paid for it. Consensus algorithm ensures the quality of labeling for any type of data — images, texts, and sounds. Hope you will find Handl worthwhile. If so, please consider supporting us on Product Hunt.

</comment><comment><USER2> How it different from MTurk? Nice cat btw!

<comment><AUTHOR> Unlike Amazon's MTurk and similar microtasking services, Handl stands for machine learning data labeling only. This allows us to acquire, train and qualify our crowd to perform labeling at the highest accuracy level on the market. And we have a different internal workflow for data annotation — crowdworkers don't choose what tasks to perform. They just work properly and get paid based on the time spent and their accuracy reached.</comment></comment>


Coroutines in C - <AUTHOR> https://www.chiark.greenend.org.uk/~sgtatham/coroutines.html <comment><USER2> The rewriting here is called "program inversion" in _Jackson structured programming_ :

[https://en.m.wikipedia.org/wiki/Jackson_structured_programmi...](https://en.m.wikipedia.org/wiki/Jackson_structured_programming)

The wiki article just hints about using coroutines under certain circumstances; so called "structure clash". The program inversion technique is fully described in Jackson's book _Principles of Program Design_ , 1975.</comment>


Responses to Jason's "What I Learned from Zuckerberg's Mistakes" - <AUTHOR> http://launch.is/blog/2010/12/28/launch003-responses-to-jasons-what-i-learned-from-zuckerberg.html

<comment><AUTHOR> Great link on app dev/design process from the post: [http://37signals.com/svn/posts/2608-ryans-talk-at-future- of-...](http://37signals.com/svn/posts/2608-ryans-talk-at-future-of-web- apps-2010-london)

Working on some UI improvements and wanted to bring some structure to my process. Still working on it, but this helps.</comment>