The Berkshire Hathaway Site is a master class in human-centered design - <AUTHOR> https://builtin.com/design-ux/berkshire-hathaway-human-centered-design <comment><USER2> Oh yeah. User-agent stylesheets and a list of links. The pinnacle of human- centered design. /s The author either doesn't understand design or has a very low-bar for tactically good user-centered experiences, or both.

I can list an endless list of bad things on this website:

\- Bad information architecture.

\- Poor contextualization, narrative, and direction of a message (just because it's Berkshire Hathaway, doesn't mean that I automatically know what I'm trying to find in their website)

\- Poor document structure that renders at the whole width of wide screens and doesn't wrap for small screens.

\- Bad typography and typographic scale (can a visually impaired person read the small text that shows dates and footnotes?)

\- Bad use of color. Everything is blue, the links are purple. Usually in plain stylesheets blue is reserved for links and purple for clicked links.

\- External links don't open in a new tab.

\- No branding. Can a user trust that this is an official website?

\- No navigational elements (navbar, breadcrumbs, etc) that allow a user to return to the main page (which is supposed to be the "master class of human- centered design). Every click is a dead-end.

\- Multiple SEO and accessibility issues:

      - Does not have a <meta name="viewport"> tag with width or
      initial-scaleNo `<meta name="viewport">` tag found. Document
      does not have a meta description

      - Text is illegible because there's no viewport meta tag
     optimized for mobile screens.

      - Tap targets are too small because there's no viewport meta
      tag optimized for mobile screens

      - The page does not contain a heading, skip link, or
      landmark region

<comment><USER3> > External links don't open in a new tab.

> No navigational elements (navbar, breadcrumbs, etc) that allow a user to > return to the main page (which is supposed to be the "master class of human- > centered design). Every click is a dead-end.

This is the web, it works like people expect web pages to work. No custom behaviors, links work like links, the back button does what the back button should. That is absolutely human friendly. If external links were supposed to open on a new page then the browsers would default to that.

> Multiple SEO and accessibility issues

Whether a site has SEO issues is irrelevant to usability of the site. It's not like they are looking for organic traffic. If I'm looking for BRK's homepage, it's easy enough to find which is all that matters from a SEO perspective for a site like this.

The accessibility issues are a concern if they actually existed. This kind of site is ideal for screen readers and while it doesn't automatically adjust for mobile, it doesn't get in the way of zoom or reader view which makes the site just fine for people who struggle with small fonts.

> The page does not contain a heading, skip link, or landmark region

You don't seem to understand why the skip links are there. In this case, there is no heading full of links you need to skip over, if you open the page and start tabbing, you are _already on the first bit of content_. It is better from a usability perspective than a skip link.

<comment><USER4> You shouldnt conflate browser defaults with good usability.

Sure its generally speaking a good rule of thumb to follow but saying the default is the right thing to do because its a default is a logical fallacy. Its appealing to authority for no actual reason.

Why is the default the default? Is it because of user studies or is it because a developer said thats the easiest thing to implement in the time i have available.

<comment><USER3> > You shouldnt conflate browser defaults with good usability.

It's a fair point, but rather vague. Perhaps if you gave an example of where you disagree it might be more useful a criticism.

BRK's page is not ideal by any means and I don't think my post or the original article suggested as much.

</comment></comment></comment></comment><comment><USER5> I believe that "Master class" is taking it a bit too far. The site has remained the same because there is no reason to update it. If the simplistic design was revolutionary or represented something other than "Don't fix what is not broken" they would be using the same format for their portfolio companies.

The site gets the info out to the people that need it, nothing more nothing less. It's a good design for what they are trying to do however it's a terrible design for many other companies.

<comment><USER6> I agree Master Class is too much[1], but it's still better than most sites I deal with today: the information is easy to find, doesn't overload your browser, and plays nice with extensions. Plus, it's usable on mobile. Not _optimized_ , sure, but at least it doesn't break my ability to use it on mobile: I can just zoom in as necessary.

But that's more of an indictment of out-of-control web design that's all too common.

[1] I think the author could plausibly mean "class" in the sense of "lesson", since he contrasts it with the other, newer site design and uses them to illustrate the difference purposes, but a) that's a bit of a stretch, and b) he never frames it as a lesson or uses the word "class" for the rest of the article.

<comment><USER5> +1 - most sites are bad and a lot of them do not introduce WHAT the product they are pitching does until below the fold.

</comment></comment></comment><comment><USER7> It seems this article is idolizing the ugliness of the site as being some some kind of contrarian user-centered design. User-centered doesn't have to mean _ugly_ , though. There's a whole lot of middle ground between "default-styled page from 1995" and "2020 SaaS landing page with flashy illustrations that doesn't explain what it does".

You might remember [http://motherfuckingwebsite.com/](http://motherfuckingwebsite.com/) vs. [http://bettermotherfuckingwebsite.com/](http://bettermotherfuckingwebsite.com/) from a few years back. Some minimal tweaks to typography/colors/spacing can make a big difference.

<comment><USER2> Not only that. Aesthetics are a function of design. They allow us to understand a message, follow a narrative and more deeply empathize with objects to the point that we may be forgiving of small issues. They are part of how we behave and interact with many things that surround us and influence us. They help us to create mental models for the world because they become an attribute of the objects we desire or loathe.

Of course, utilitarian and plain boring design aesthetics have a place in the world, but imagine if everything was like this website. It would be almost impossible to generate opinions because we don't have any distinct reference to help us imagine if something could be more harmonic and visually appealing.

I believe that the goal of aesthetics is precisely to empower people to generate feelings toward objects that otherwise wouldn't generate a connection. It's the same reason why we can appreciate art or admire nature. Because those things are full of visual attributes that help us to elicit thoughts and re-describe things as we see them (ugly, funny, colorful, boring, etc).

</comment></comment><comment><USER8> > On first impression, Option B looks straight out of the 80s. The text is > off, the font is off, the URLs look outdated

What web browser was this guy using in the 80s?

<comment><USER9> [https://literarydevices.net/hyperbole/](https://literarydevices.net/hyperbole/)

<comment><USER6> Hyperbole is when you use _obvious_ , _extreme_ exaggerations. Going one unit past "completely plausible" is a confused, weak use of the technique.

For example, I wouldn't call it hyperbole (or effective writing) if you referred to an interest rate of 45% as 55% "to emphasize how big it is".

<comment><USER10> Agreed. It's kind of distracting because, when you read it, you start thinking, "is that right?" My immediate thought was to go look up with Mosaic came out and determine if there were graphical browsers before that, which, I think, is not what the author intended.

<comment><USER6> I have that problem generally, where I will automatically think of plausible interpretations of what someone is saying (like, here, imagining that early graphical browsers e.g. for minitel looked like this), and thus often can't tell if someone is joking.

</comment></comment></comment></comment></comment><comment><USER11> The Berkshire Hathaway sure can look like that _precisely because_ it's the website of Berkshire Hathaway, an established and trusted holding company - pretty much the hallmark of blue chip investment.

Furthermore, Berkshire does not try to entice visitors or market any services through its website. Its only purpose is shareholder communication, and for that, this website is one step removed from sending those by fax.

<comment><USER12> > The Berkshire Hathaway sure can look like that precisely because it's the > website of Berkshire Hathaway, an established and trusted holding company - > pretty much the hallmark of blue chip investment.

> Furthermore, Berkshire does not try to entice visitors or market any > services through its website. Its only purpose is shareholder communication, > and for that, this website is one step removed from sending those by fax.

That's exactly what the post says:

> The official website is built for the shareholders of Berkshire Hathaway. > It's not built to convert customers. It's not built for you or me. > Shareholders are really only concerned with very specific things: news > releases, reports and letters from Warren Buffett to name a few.

<comment><USER13> I'm not sure that theory makes sense. If you want SEC filings, you can get them at sec.gov, which is also kind of retro.

<comment><USER12> I'm not advancing any theory, only pointing out that what flyinglizard said ([https://news.ycombinator.com/item?id=22867783](https://news.ycombinator.com/item?id=22867783)) is what the article said.

</comment></comment></comment></comment><comment><USER14> The quality of the site is not coming from the quality of web design (it's not that good).

It's the purity of the function that leads to good design. The function is to provide information for stock owners and potential investors, many of them are old people. The site is not trying to sell, influence or impress. Berkshire is selling nothing to consumers or visitors. Their subsidiaries that sell have their own websites.

Berkshire HQ has just 25 staffers. Their subsidiaries employ close to 400,000 people.

</comment><comment><USER15> Option B serves the user with relevant information too fast. That might be nice for the user, but for SEO, it is horrible, since Google incentives building websites that suck users in and never let them go (by incorporating time spent on the page into their ranking).

</comment><comment><USER16> > Option B looks straight out of the eighties

From Wikipedia:

"[Tim Berners-Lee] wrote the first web browser in 1990 while employed at CERN near Geneva, Switzerland. The browser was released outside CERN in 1991, first to other research institutions starting in January 1991 and then to the general public in August 1991."

I guess the eighties have become a frame of mind rather than a period in time.

<comment><USER13> I think sometimes primitive graphics are equated with Prodigy, which was around in the 80s, I think.

</comment></comment><comment><USER17> Always loved Benchmark Capital's website design: [http://www.benchmark.com](http://www.benchmark.com)

It's great to be able to say "we are so good all we need is an unsecured landing page from the 90s."

</comment><comment> ajay-d Renaissance Technologies - one of the "most secretive and successful" hedge funds in the world has a pretty bare bones site too [https://www.rentec.com/](https://www.rentec.com/)

<comment><USER18> Because they dont need anything else on their website, because the people that invest in their fund dont find them through a website. You dont get to decide to invest in funds like those, they get to pick whose money they accept, they dont even necessarily need a website

</comment></comment><comment><USER19> "Master Class" in HCI? This is a farce. View this on any mobile device and you realize that it breaks all rules of HCI.

<comment><USER20> The poor mobile support is pretty unforgivable. I do really like old-fashioned websites such as Craigslist or very straightforward blogs such as Paul Graham's. But this particular example does have a lot of usability problems.

</comment></comment><comment><USER21> Whenever I come across a website which looks like its from the 90s I click a button [0] in my bookmarks bar to prettify it.

[0] [https://oxal.org/projects/sakura/bookmark](https://oxal.org/projects/sakura/bookmark)

</comment><comment><USER22> You'd think that site would be accessible. And while it's not terrible, all the unordered lists with a single list item in them is crazy annoying if you're using a screen reader.

</comment><comment><USER23> In my opinion, this article seems to be biased with Halo effect.

</comment><comment><USER24> Error 1020 Ray ID: 583eb7e1fa8bda42 • 2020-04-14 16:14:10 UTC Access denied What happened? This website is using a security service to protect itself from online attacks.

</comment><comment><USER25> Echoing what others in these comments have said, simple and direct is good but to call this site a masterclass in design is really going overboard

</comment><comment><USER26> I don't understand why so many upvotes. While the underlying concept of the article is correct, and the author deserves credit for that, the argument made to support it can be true only if the reader accepts the premise of the article itself (option B is made having the user at the center), which the author openly admits he/she has no clue if that is the case.

</comment><comment><USER27> What caused so many people to start using "master class" in this way?

Usage appears to be on the rise too: [https://trends.google.com/trends/explore?date=all&geo=US&q=%...](https://trends.google.com/trends/explore?date=all&geo=US&q=%22master%20class%22)

<comment><USER28> It's a new elearning platform with a good advertising budget. [https://www.masterclass.com/](https://www.masterclass.com/) That must explain the google trend.

</comment></comment><comment><USER29> > _Access denied

>What happened?

>This website is using a security service to protect itself from online attacks._

So being HNed is now considered as DDoS? Last time I checked an article on HN Front page got me about 30K in a day, even if that happened to be all within the one minute, how could that be classified as DDoS?

</comment><comment><USER30> The colors are painful (to my eyes) and non-standard. I disagree with the article.

</comment><comment><USER31> One more aspect of why this design is appropriate is consistency. The 1998 version found in the wayback machine is basically the same design. Given the product the consistency is especially appreciated.

</comment><comment><USER19> BH forgot about the introduction of mobile devices in the last 10+ years.

</comment><comment><USER32> Applaud Simons for another master piece with RenTec [https://www.rentec.com/](https://www.rentec.com/)

</comment><comment><USER33> You have to pick colors and typefaces, why not pick good ones? There are probably millions of choices that are both beautiful and functional.

The author seems to believe that there's an essential zero-sum relationship between form and functionality, i.e. by removing "bells and whistles", you've somehow improved the finding of information. That doesn't make sense to me.

</comment><comment><USER34> And now the said site is trying to cope with the traffic.. They should use a cdn.

</comment><comment><USER35> <META NAME="GENERATOR" CONTENT="Adobe PageMill 2.0 Win">

Awesome!

</comment><comment><USER36> The business is owned by quite literally the tightest man on the planet. (tight as in frugal)

It's not good design. It's a legacy system.

It still 'does the job', so upgrading it is probably seen as an unnecessary expense.

</comment><comment><USER37> TLDR: Don't use CSS.

</comment><comment><USER38> The practical lesson here is, as always: be extremely wealthy.

No matter what you do, people will think it is profoundly smart.

<comment><USER39> Counter point: Craigslist also has very simplistic, human-centered design that they get praised for and they are not rich at all.

<comment><USER40> Craiglist absolutely gets praised because they have been so successful with that design. There are plenty of websites that looked like Craigslist but were not as successful, and you won't see them in thought leadership blog posts in 2020.

Also, Craiglist has evolved their site quite a bit and at this point their "design" is no longer a matter of simplicity, but essentially a visual aesthetic that they maintain as a matter of branding and culture, kind of like Amazon giving people door-desks long after it became cheaper for them to just buy regular office furniture in bulk.

<comment><USER41> Plus, Craigslist couldn't just change their design to something "modern", it'd put people off - people don't like change. Or, people don't like sudden change.

It reminds me of a national adverts website over here, Marktplaats; it used to be a very 90's, table-driven lists of links kind of deal with a fugly brown background. But it took off nevertheless, and became a major business that was eventually taken over by Ebay (in 2004). It's very slowly changed its front- end to a more modern facing one. But they made sure to do it slowly. Evolution rather than revolution.</comment></comment></comment></comment>


NextDB: The Hosted AJAX Database - <AUTHOR> http://nextdb.net/ <comment><USER2> Very interesting model. The big question I have (and can't seem to figure it out reading the docs) is how security is handled. (That's been the huge issue with JS talking to a DB.)

From the security FAQs: "It is the responsibility of the application to create secure queries and to perform appropriate security testing."

Ack! What the heck is a secure query?!

<comment><USER3> Take a look at this section of the manual. This explains how we encrypt a data structure encoding change permissions with data that leaves the database: <http://www.nextdb.net/devguide/index.html#Up>

At a thirty-thousand foot level, we explain the "round trip security model" here: <http://docs.google.com/Presentation?id=df7mdmdw_11c5rmfbg9>

</comment></comment><comment><USER4> Dang, this is an idea I explored doing about 4 years ago (using PostgreSQL as the engine and Sun Thumpers for the hardware). Underlines that execution is everything...

My main business concern was whether people who were already savvy enough to run a website wouldn't just as soon run their own database server (MySQL or PostgreSQL), which ain't really rocket science.

<comment><USER2> Agreed, it's not rocket science. But I think it's super important to explore these types of esoteric models and allow developers to "get creative".

</comment></comment><comment> ryan-allen It's patent pending! Patended the combination of two buzzwords 'AJAX' and 'Database'.

</comment><comment><USER5> How does this compare to CouchDB (restful http-based json doc-oriented, etc.)?

</comment><comment><USER6> In the case of building a platform, trusting someone with your data is the most crucial thing. So, this a barrier that will limit this only to non- profesional applications, e.g. create simple forms? Something they can already do using Google spreadsheets.

Far from that advanced applications need not-only a storage system.

</comment><comment><USER7> Yay software patents!</comment>


TikTok app to stop accessing user clipboards after being caught in the act - <AUTHOR> https://www.macrumors.com/2020/06/25/tiktok-clipboard-access-ios-14-caught/ <comment><USER2> Great to see another layer of transparency in ios14.

Bit I wonder why everyone talking about one specific app? I see a huge bias towards TikTok in headlines

"iOS 14 caught TikTok and other apps spying on the clipboard" [0]

"iOS 14 beta shows apps like TikTok still spy on your iPhone" [1]

There a bunch of apps like VICE, Google News, WSJ that has been caught doing exactly the same. [2]

I may find the explanation why TikTok did that. In China WeChat blocks direct links to their competitors. So apps like Taobao or Douyin have to find a workaround for deeplinks. When you want to share the video from Douyin with a friend in WeChat, Douyin generates the following message.

在东京刚毕业入职三个月的职场小白 搬家找房 坚持更新#日本vlog #东京 [https://v.douyin.com/J8ceMYY/](https://v.douyin.com/J8ceMYY/) 复制此链接,打开【抖音短视频】,直接观看视频!

In WeChat the link is not clickbale. To see the content user has to copy full text and go to the Douyin. The app will read the clipboard and perform the transition to the video. On the link below you can find the video - explanation [3]

Probably they had re-use some code in TikTok. Definitely they need to be more accurate towards data safety but I don't think they really made a pipeline for spying using clipboard.

There is a lot of buzz around TikTok these days, but I want to get an answer from other apps as well.

[0] [https://bgr.com/2020/06/26/ios-14-beta-privacy-features- tikt...](https://bgr.com/2020/06/26/ios-14-beta-privacy-features-tiktok- spying-clipboard-data/)

[1] [https://mashable.com/article/iphone-ios-14-privacy- clipboard...](https://mashable.com/article/iphone-ios-14-privacy-clipboard- apple-apps/)

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

[3] [https://twitter.com/kidrulit/status/1277629462721384448](https://twitter.com/kidrulit/status/1277629462721384448)

<comment><USER3> Just because other apps do that is no excuse for bad behaviour. Almost all apps get flack for bad behaviour. Tiktok is the newest popular thing on the block and it is expected to be widely covered. Honestly it is okay to discuss the bar behaviours of an app without blaming other apps.

<comment><USER4> Being "caught" reading the clipboard is not an indictment that you are doing something wrong. It's very good that it is no longer occurring invisibly in the background, but so far what we have seen appears to be frivolous usage rather than malicious.

</comment></comment></comment><comment><USER5> The security implications of allowing communications on a platform that is subject to the absolute control of a foreign government, seems like a very very bad idea. That can be a lesson learned the easy way or the hard way.

<comment><USER6> I honestly think we give Chinese apps too much equal footing. In about 5-8 years, when China has insane surveillance network around the world (they already have), this comment is going to sound the most sensible thing to do - blanket ban any application developed and served by the CCP or similar government.

People teeter-totter about righteousness and freedom of choice, but IMO we need to stop feeding the CCP with more power/$$$/influence ... NOW ... Freedom of choice is great when there is fairness and democratic values built in, when the government isn't on some Han-supremacy drug and expansionist motives.

Someone will inevitably respond with whataboutism and smear American companies into the mix as if they're expressing their understanding of hypocracy and one-sidedness. It is _supposed_ to be one-sided. The west offered two-way street which China declined to walk on. So, now all bets are off. Equivalency with the western apps/services/goods is no longer a valid counter argument.

On fair, just, and rational grounds - I am a progressive. In unfair, unjust and irrational waters - I am a conservative.

<comment><USER7> The CCP has already shown they're willing to abuse TikTok to stir unrest in the USA, you aren't even making a theoretical argument. I'm a lot more worried about China than Russia, when it comes to bad behavior by state actors.

<comment><USER8> This is why I'm always confused my privacy arguments. When someone says that they want privacy the responses go like:

reference Goebbels: "I have nothing to hide, so I'm not worried"

Downplay: "They only read my emails and everything I write to sell me stuff better. Sometimes I need stuff. They're helping me!" As if it can only be used to sell and nothing else.

World revolves around self: "Well ads don't affect me." Like it doesn't matter that everyone else is affected even if you aren't.

Completely ignoring the fact that if someone can manipulate you to buy stuff they might be able to use it to manipulate you do do other things. I mean we have political ads. And Coke ads aren't there to sell you coke (they are there to make you feel better about your purchase). Frankly, to me it doesn't even matter if no one has done that yet (I'm aware of the clear evidence that people have) but that we're giving people the ability to do this in mass and in very precise ways. That just leads to a potential turn in democracy. "Just educating people" doesn't solve the problem either. Ads are still effective on smart people. So the question is "are the benefits ~~profits~~ worth the cost?" It is reasonable to think "yes", but I'm a resounding "no."

Yes, we use political ads to "manipulate democracy" and the like, but a mass statewide commercial is a very different thing than an individualized ad targeted to a specific person. At least to me these are very different (and we still have regulations on what you can say in political ads). Where do we draw the line? We talk about data a lot here and what we can model with it. What will ads look like in 20-50 years if we don't draw a line in privacy and technology continues to become more powerful? I think individualized ads will look very different. We do need to determine what level of individualization we can target with an ad, and I don't see much of that happening.

<comment><USER7> Excellent comment, you changed my thinking on the issue. I feel like liberal, educated democracies are focused on the wrong problems. It's only going to get harder to change course the longer we keep sailing in this direction of a laissez faire, anything-goes approach to software.

Apple's infamous walled garden solves this problem to some extent, but introduces others because it lacks due process, leading to corruption where money can solve any problem, and so apps like Tiktok get to abuse their trust with impunity.

<comment><USER8> As I see it, democracy is unstable. I like living in a democratic system (yes, a democratically elected republic is still a democratic system). But we have to recognize that it is unstable and democracies work under the pretense that the keys to power are distributed and frequently moving hands (by elective processes). So the danger to democracy is the collection of keys, or the consolidation of power. Power consolidation DOES have benefits after all. I mean a benevolent dictator is probably the best form of government, the issue is that if the next dictator isn't benevolent (or how long until that). The same is with democracy. We keep power distributed so that when a malevolent (or even just non-benevolent) ruler comes into power they aren't able to do much. Essentially as long as we don't let corruption fill the majority of roles with power, we're fine. They have to spend a lot of time and resources consolidating that power.

Essentially this is what "turnkey tyranny" is: the point at which power is consolidated to such a degree that a malevolent ruler would have the power of a tyrant.

So it has never been about having something to hide or that people aren't using a power malevolently. It is the potential for abuse and that given enough time a power is likely to be abused. Distribution makes it more difficult (but does not eliminate) to abuse power.

With HN's love for federated systems, which essentially operate under similar principles, I'm surprised this is not a more popular concept. The only difference is that we're talking about government officials instead of Moxie.

<comment><USER7> All governments are unstable. The best we can hope for is they do the most good for the longest amount of time. The better a government does, the more its population tends to assume that it's impossible for their government to fail, and they don't guard against it, instead choosing convenience (and properly federated government is the opposite of convenient).

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Most of the anti-TikTok comments that have emerged recently are beyond hysterical. We are arguing about China using this app as a primary nexus of intelligence gathering, in a world where they already have the US government's entire OPM database?[1]

A lot of apps are doing the stupid clipboard detection thing. As others have commented, there's reasons for this that range from spam detection to link shortening. It's lousy, I agree, but this has been a very common thing in a pre-iOS 14 world.

1: [https://en.m.wikipedia.org/wiki/Office_of_Personnel_Manageme...](https://en.m.wikipedia.org/wiki/Office_of_Personnel_Management_data_breach)

<comment><USER10> whats an OPM database? this?? [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3245162/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3245162/)

<comment><USER9> Thought the OPM hack was common knowledge, guess not. I added a link!

</comment></comment></comment><comment><USER11> Too little, too late. Already forced the family to uninstall it and its gone forever. Wish the kids could understand that its spyware with access to a lot of toxic social media.

<comment><USER12> My Daughter: "Dad let me install TikTok!"

Me: "No. It is Chinese spyware."

My Daughter: "<so and so from school> has TikTok!"

Me: "<so and so> is a Chinese asset!"

My Daughter: "No she's not!"

Every day.

<comment><USER13> In my experience it is a lot easier to tell your friends that you don't have any social media, rather than saying that you don't have a specific social media app/account/thing. Why? It's harder to understand why someone wouldn't install TikTok when they already have Snapchat/Instagram/everything else.

(I'm a high school student, abstaining from social media other than HN.)

Edit: Have you tried explaining to your daughter why TikTok is Chinese spyware?

<comment><USER14> HN is social media?

<comment><USER15> I think it is, at least as much as Reddit is as well. And before that Digg and Slashdot.

</comment></comment></comment></comment></comment><comment><USER16> I'm happy that ios14 is adding more transparency on whats apps are accessing like this clipboard situation. I'd love to see more of these, like camera roll and mic access.

<comment><USER17> iOS 14 has a new workflow that lets the user give an app access to a photo or selected photos without the app getting access to any of their other photos. Big privacy improvement on that front at least. I don't know about mic access.

</comment></comment><comment><USER18> This is so ridiculous. Google Maps accesses the clipboard. Try it out: copy an address and open maps.

So do Facebook and Instagram, I'm sure.

The level of paranoia in the Valley is astounding.

<comment><USER19> Google Maps has a clear use case for accessing the clipboard. If Tok Tok only accessed the clipboard on launch to check for a Tik Tok URL, that might be one thing, but there's no clear reason Tik Tok would need access to the clipboard literally every 3 keystrokes.

<comment><USER20> > _Google Maps has a clear use case for accessing the clipboard._

I don't think it does. Neither application should "access" the clipboard.

<comment><USER21> Google maps detects copied addresses and lets you route to them in one click.

<comment><USER20> > _Google maps detects copied addresses and lets you route to them in one > click._

Routing to copied addresses is not a clear use case for letting something spy on everything the user copies, because we already have an invocation for handing clipboard contents to software exactly when the user desires it. It's called the "paste" command.

At some point engineers need to stop doing things just because they can.

</comment></comment></comment></comment></comment><comment><USER22> Can someone answer why iOS even allows the ability to read the clipboard buffer in the first place? Just seems like poor privacy and security design.

<comment><USER23> so that if you switch from app A to app B, it can check your clipboard buffer for if you have a URL pasted into it and load that URL in the context of the app

example: if you copied twitter://foo/tweet/bar or [https://twitter.com/foo/tweet/bar](https://twitter.com/foo/tweet/bar), it checks your clipboard and loads that tweet instantly

at least that's what i read over on reddit about this on r/apple

<comment><USER20> Except that letting apps randomly pull from the clipboard, where you might have copied passwords, bank account numbers, or any other sensitive information, is such an obviously unsafe idea that the person who suggested it should have been immediately sent to special privacy consciousness training.

For what? To save one "send to app" or "paste"?

At least reserve that functionality exclusively for the operating system on the grounds of "TRUST YOU? HAHAHAHAHA".

</comment></comment></comment><comment><USER24> I recently made the change in Firefox on macOS to stop websites from accessing the clipboard [1], and now pasting into Facebook is completely broken.

I wonder if they've been checking out my clipboard contents.

[1] [https://www.ghacks.net/2014/01/08/block-websites-reading- mod...](https://www.ghacks.net/2014/01/08/block-websites-reading-modifying- clipboard-contents-firefox/)

<comment><USER25> >I recently made the change in Firefox on macOS to stop websites from accessing the clipboard

I don't think you needed to do that. I searched around and wasn't able to find any proof of concept that was able to steal clipboard data from firefox. see: [https://news.ycombinator.com/item?id=23635488](https://news.ycombinator.com/item?id=23635488)

</comment></comment><comment><USER26> When I installed TikTok, my phone's battery life shortened by 2-3x. That's suspicious enough for me to stay far away from it

</comment><comment><USER27> Apple manually reviews the code of every app update. Why aren't they blocking this functionality from getting released in the first place?

I feel like every time I submit an app update I get questioned about why my app needs access to $xyz feature.

<comment><USER20> > _manually_

Do you really think so?

</comment></comment><comment><USER28> An interesting reddit comment by someone who uncovered many more shady data collection practices by Tik Tok: [https://www.reddit.com/r/videos/comments/fxgi06/not_new_news...](https://www.reddit.com/r/videos/comments/fxgi06/not_new_news_but_tbh_if_you_have_tiktiok_just_get/fmuko1m/)

</comment><comment><USER29> Just wanted to inform audience here that TikTok is blocked in China. [1]

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

<comment><USER30> Interesting, is this more proof that the Chinese gov't is using it as a spying app?

<comment><USER31> It's probably more because tik tok and douyin have different content policies, having to police tik tok content as strictly as domestic content would stifle tik tok's growth outside the GFW.

</comment></comment></comment><comment><USER32> Duplicate of: [https://news.ycombinator.com/item?id=23653562](https://news.ycombinator.com/item?id=23653562)

</comment><comment><USER33> Stuff like this is why I prefer a reactive web interface over a mobile app.

It seems like unless you need direct access to the camera or it's a game a web version should be fine.

</comment><comment><USER34> I'm starting to think these devices need to provide examples when throwing up the permissions prompt. Worst case examples of what this permission can enable so that app developers might at least try to limit their requests.

</comment><comment><USER35> Good on Apple. This and backwards compatibility, make a compelling case for iOS.

</comment><comment><USER36> Why do phones need the clipboard at all? There is a 'share with' infrastructure. Why not explicitly send copied data to the desired app directly instead of storing it in a central place?

<comment><USER25> That works for sharing an article or a post, but how do you quote a portion of a post?

<comment><USER37> On Android, you can happily select some text then hit Share (same menu as Copy and Cut).

<comment><USER25> That pattern is mainly used to open an app to a specific activity. eg. opening google search to a particular search phrase, or opening the dialer to a particular phone number. I can't see it working for when you're writing a email, and want to include a link/quote/image.

<comment><USER37> But that's exactly what I just did. Highlighted some text in a news article and Share'd to my email client, it dropped the text in, quoted, to the body of an email with the link to the article under it.

</comment></comment></comment></comment></comment><comment><USER3> Tim tok has no business snooping into by clipboard. It is bad behaviour irrespective of if it was nefarious or not. No need to justify this by bringing up behaviour of apps.

</comment><comment><USER38> Too little too late. They should be barred from US markets however there may be worse actors out there that borderline criminals could call 'industry standard'.

</comment><comment><USER39> TikTok also is violating COPPA. Any underage child that signs up with a Google Account, you can clearly see from the Google account settings that they are collecting email addresses and other personal information. I believe Google and other app store providers should just remove them.

</comment><comment><USER40> Is it possible for apps to read photos (not just metadata)?

</comment><comment><USER41> Ya, little fucking late to back track that now.

</comment><comment><USER42> It looks like apps can spy as much as they want and that it has little implications for the perpetrators... "ooops sorry! now let's carry on"

</comment><comment><USER43> Hotels.com and a host of others did the same thing, indicating that this is not particular nefarious.

However we keep talking about TikTok.

Why is that?

<comment><USER44> Because Tik Tok takes data collection to a whole new level. It uses this, and every other trick in the book. And that matters because it's not clear that this data will be constrained to the activities of sending me extremely targeted advertising. Now we can have a reasonable debate about that, but this has a new level of concern.

As a Chinese app, how do I know the Chinese government will not use me as an unknowing participant in a future cyberwar? One thing Tik Tok does is collect a pretty exhaustive list apps installed on my phone. That could be used for identifying vulnerabilities they could potentially exploit.

</comment></comment><comment><USER45> but what's next?

</comment><comment><USER46> maybe i do not know how clipboard works, but the message "<active app> pasted from <inactive app>" is the worst possible label.

Also funny how every app shows it. Guess IOS14 will be known by non technical users as "the cookie-law iphone version" and everything will continue as usual.

</comment><comment><USER47> Tiktok has a lot of money. They can control speculator, then control America, then everyone.

</comment><comment><USER48> This is just an overblown yellow-peril panic, right? How does any app paste? By "accessing the user clipboards". How does the chrome omnibox do "text you copied"? By "accessing the user clipboards".

<comment><USER49> Normal apps wait until the user attempts to perform a paste action to access the clipboard, instead of accessing the clipboard every two seconds.

<comment><USER48> Malice or just stupidity? I can imagine a dozen different reasons a program might access the clipboard in a loop, all of which reduce to "we are bad programmers".

<comment><USER3> Not all of them reduce to bad programmers. It could be either of malice or stupidity. In this age when data is valuable, it is better to be safe and assume malice.</comment></comment></comment></comment>


Stop Reclining Your Airplane Seat - <AUTHOR> https://www.outsideonline.com/2391763/stop-reclining-your-seat-airplanes <comment><USER2> This is game-theoretic prisoner capture talk. Rather than rail against the inhumane conditions imposed from above, the inmates begin to self-police to impose ever harsher doctrines on each other, because it appears to alleviate even worse suffering.

"Oh dear airlines, please please take out reclining seats altogether! Thank you so much, thank you! So very kind!"

Shame on you man.</comment>


You're Paying into a Broken System Whenever You Buy Something on iOS - <AUTHOR> https://onezero.medium.com/youre-paying-into-a-broken-system-whenever-you-buy-something-on-ios-3f3aa88ecf8c <comment><USER2> >On no other platform would we accept a scenario where the owner of that platform dictated not only the tools developers can use, but restricted the ways they talk about their products and pricing. We would call it unfair, monopolistic, and overbearing. But on our smartphones, it's just a fact of life.

I am pretty sure game consoles have been doing this basically since their existence. None of them allow you to make 'A' rated games for example. (Considering the topic of the article, it should be obvious I am referring to "restricted the ways they talk about their products and pricing" here)

Retail stores keep some amount of control over signage, I doubt Walmart would be particularly happy if a sign said you could buy X device cheaper directly from the manufacturer.

In reality Apple is continuing a trend that is normal for store fronts, digital or physical.

However, the "walled garden" of Apple is largely why I stick with iOS. I don't want to be forced to trust every company with my credit card information (a developer implementing their own payment system will be an immediate delete for me, with very few exception... like Amazon for obvious reasons).

Also lets not forget that we keep seeing reports that iOS users are more likely to spend money than Android users. I would argue that the increased income from users makes up for the 30% cut.

<comment><USER3> > I don't want to be forced to trust every company with my credit card > information

This problem is solved with Paypal.

<comment><USER4> Why would anyone trust PayPal? They still owe me $900 from 2005 when I was the victim of a reverse scam. (Buyer claimed i scammed and never sent it; they refused to investigate or accept my tracking info as proof)

<comment><USER5> To me this just verifies that diversity is better than uniformity in these scenarios. That's fine if you don't trust PayPal because of your own experiences, but why should we be forced to use Apple Pay?

<comment><USER6> Nobody forces you to use Apple Pay.

</comment></comment></comment></comment></comment><comment><USER7> As an end user I approve of the walled garden. I don't mind the limitations on other forms of payment. I think it helps prevent fraud and insecure transactions, and I like the freedom and ease of use that comes with knowing that apps on the ios store went through a fairly substantial review process.

As a developer (though it has been a few years since I wrote code for mobile) Apple's tools, documentation and libraries were so much better than Google's, though that may say more about Google than Apple. And I approve of app store revenue supporting those tools.

But 30% is really, really high. I don't work for Apple, or Google for that matter, so I have no insight into what portion of the money goes to the services mentioned above, but it seems to me that even 20% would be pretty hard to swallow, and 30% seems unreasonable.

I would love to hear from someone with actual knowledge of this how much of that app store revenue is profit.

<comment><USER8> >But 30% is really, really high

Interestingly, that's about the average income tax rate. I wonder if Apple and Uncle Sam both independently came to the same conclusion that that's the highest amount that they can get away with without hitting the tipping point.

<comment><USER9> It's not Apple it's everyone. Sell an eBook on Amazon - 35 to 70% royalty. I'm sure there are some outliers but most are right in that range. I think physical products seem to be less than digital ones: Ebay ~10%, Etsy ~5%.

<comment><USER10> 30/30/30 splits are extremely common across all industries.

[https://www.nuvonium.com/blog/view/how-to-price-your- product...](https://www.nuvonium.com/blog/view/how-to-price-your-product-for- retail-distributor-and-direct-to-consumer-sal)

Basically a $10 product had better cost $3 to make, $6 for wholesale, and $10 MSRP. If you're outsourcing manufacture, then you're likely adding another layer in there for a 30/30/30 split.

</comment></comment></comment></comment><comment><USER11> > Here's the thing: If you're a developer for iOS or macOS and want to charge > customers money, the Apple-provided payment tools, which demand a 30% cut, > are the only ones you're allowed to use. It's not even a discussion.

Why does macOS keep getting offhandedly roped into these discussions? Not only is the Mac App Store not a requirement, it's rarely used.

Maybe Apple intends to change that some day, but that's speculation, not reality. And frankly, from where I sit, people have been predicting the demise of macOS sideloading for nearly a decade now, and they're still waiting.

<comment><USER12> >Maybe Apple intends to change that some day, but that's speculation, not reality.

I'd say it's pretty obvious that this is a desired outcome on Apple's part. You can either wait until it's too late or bring it up before it's happening.

<comment><USER11> Based on what? Have Apple executives said anything on the matter? Even vague warnings? You're relying on your own interpretations of their intentions.

Over the years, Mac's _defaults_ have changed to protect inexperienced users via restrictions like Gatekeeper and SIP. Apple has _never_ attempted to make any of these systems mandatory. All it takes is a few terminal commands to gain complete kernel-level access to my system.

<comment><USER13> > Have Apple executives said anything on the matter? Even vague warnings?

Because companies never lie or say that "we're not going to do XYZ" until next week/month/year where they go "XYZ is the new awesome". Expecting companies to be honest is like placing a cat near a canary and expecting them to be BFFs, especially when the topic is something that people have negative concerns about.

It is _MUCH_ better to be explicit and loud about what you do not want to see _before_ it happens, than try to reverse a situation after it has already happened. You lose nothing by doing the former, even if there were never plans to do what you fear might happen.

<comment><USER14> I tend to look at things from the lens of social capital. If I'm always yelling about something, it desensitizes them when something bad actually happens. The "boy who cried wolf" is the downside, and being explicit and loud about something that hasn't even happened and (to most people's eyes) isn't in the works... It marginalizes you. A lot.

</comment></comment></comment></comment></comment><comment><USER15> Disagree. Every system has problems. Look at what happened with Zoom — unrestricted access to your entire user account on MacOS, for them to do whatever they want. Normal people should not have to even think about a virus or malware scanner on their system.

I like where Apple is going and I like the iOS model. Most of all, I know that people like my parents will be better protected from malware and spyware and crypto extortion.

<comment><USER16> Except this ignores the fact that there has been spyware and malware on Apple's store. Which perhaps gets removed eventually, but what about services that sell your data to the highest bidder without Apple's knowledge? Apple's offered security is relative to their definition of security. All it takes is your parents to install a malicious app that passed the app review. Deferring to Apple as some sort of security baby-sitter is just lazy and blind to the truth.

<comment><USER15> Like I said, no system is perfect. But let's be real — which OS model is likely to better secure them and limit the damage? It's objectively clear it's iOS. iCloud backups make recovering from the damage much easier too. Backing up MacOS or Windows is still not easy.

Even if they installed a malicious app on iOS, the damage is still limited because of the security model of iOS.

I definitely understand the concern of centralizing everything around one provider, but I'm just pointing out that these systems win because, on the whole, they are a better experience for users. It's why Facebook wins, and it's why closed systems continue to crush open ones.

<comment><USER16> > It's why Facebook wins, and it's why closed systems continue to crush open > ones.

There's a bit too much going on in your response, so...I greatly disagree on many levels and I feel this statement is a good lead as to why.

</comment></comment></comment></comment><comment><USER17> I know its snarky but complaining about Apple's walled garden via a post on Medium makes me chuckle.

<comment> ctrl-j It's especially funny to me, since I apparently have exceeded my monthly premium medium article limit - and would need to pay to actually read this.

<comment><USER18> Does "open in a private window" work?

<comment><USER19> Yes, but, why should I have to do that? I'm not even angry at Medium, business do what business have to do. But why do people willingly post their content on Medium where it gets walled? To begin with, there's WordPress - and countless other alternatives.

<comment><USER20> I think you need to opt in for your article to be behind paywall and if you do that you get some share from that. So it is basically people wanting to make money from what they write.

<comment><USER19> Ah ok, so everyone is being rational - that's awesome to hear, thanks! :)

</comment></comment></comment></comment></comment></comment><comment><USER21> I am happy buying stuff from the iOS store. It's convenient, quick and easy. No objection as an end user.

<comment><USER22> Wouldn't you be happier if prices were 25% lower?

Maybe you're not objecting because you don't know how much better the alternative could be?

<comment><USER23> if the alternative is a malware-infested google play store where every second app phones home 900 times a day or whatever, i think i'll pass.

I'm making my iOS walled garden choice with open eyes.

I'm happy to sideload apps if they're worth it; so far the only one i found that I cared enough about to do this with was Blink, and i wound up buying it on the app store afterwards so the developers could get their cut.

</comment></comment></comment><comment><USER24> The mobile app markets are operating at such scales, that there's a literal avalanche of scammers and assholes waiting to take advantage of you.

There is zero chance that I would send personal info or payment data to some no-name app and even most of the other well known apps.

<comment><USER25> Correlation may not be causation, but I have a four year old CC that is just used for online subscriptins and purchases (netflix, hbo, apple, amazon, intuit, airlines, phone).

Friday AM, I threw caution to the wind and used it at a smaller retailer site and software vendor. Within an hour I had a notice from my bank that my cc information had been exposed and a new card was being sent to me.

I don't like a world where I have to be paranoid and minimize the vendors who get my sacred numbers/business, but from the headlines and experience not many others are willing to be paranoid enough about security for me.

</comment></comment><comment><USER26> I had a while ago calculated the actual download cost with S3's pricing on what each ~100MB Spotify update would cost if it was self hosted. Assuming each paid and free Spotify customer on the iOS platform updated the app was something to the tune of tens of thousands of dollars depending on how you estimate the marketshare of iOS for Spotify versus their other platforms.

What the App Store provides is not valueless, quite the opposite in fact. It's an entire system of distribution management.

Is it monopolistic? By definition, no, because Android is the #1 smartphone platform in the world.

Is it great that Apple has provided no alternative way of downloading software to the iPhone and iPad? No, that's not great either, but users knew that from day one (when the iPhone had no App Store at all).

In reality, iOS is no different than a game console like the PlayStation 4 or Xbox One, and yet we consider those closed marketplaces completely functional and normal.

If Apple was the only company making smartphones or if they even made a plurality of them, perhaps this would be a problem.

<comment><USER27> > Is it monopolistic? By definition, no, because Android is the #1 smartphone > platform in the world.

This depends on how you describe the market. Is the market smartphone users or is it iOS apps? If you are in the market to buy an iOS app, you must go through apple, which would suggest it is a monopoly. IANAL but this has precedence - think of the "windows browser market" that Microsoft was raked over the coals about. The fact that you could buy a Mac or run Linux didn't appease the courts IIRC.

I find a lot of value in the iOS App Store and think it is just like a game console, but that doesn't mean it can't be viewed as a monopoly _for iOS apps_

<comment><USER26> Microsoft was raked over the coals because they actually possessed a pure monopoly.

In 2002 Internet Explorer had a 96.6% browser marketshare. [1]

In 1999 Microsoft Windows made up around 95% of desktop operating systems in use. [2]

In terms of antitrust law, IANAL but, I think you'd have a harder time convincing a court that the App Store is a monopoly of any sort. I don't think you can just break down markets into sections like that and claim they have a monopoly on that section.

[1] [https://en.wikipedia.org/wiki/Usage_share_of_web_browsers#On...](https://en.wikipedia.org/wiki/Usage_share_of_web_browsers#OneStat.com_\(April_2002_to_March_2009\))

[2] [https://money.cnn.com/1999/01/19/technology/microsoft/](https://money.cnn.com/1999/01/19/technology/microsoft/)

</comment></comment></comment><comment><USER28> Even if Apple takes 30%, that's still 70% that the app developer wouldn't have if the App store didn't exist. Without the App Store we would still depend on publishers to put us into stores, ask any author how that worked out for them.

</comment><comment><USER29> Sorry, but the blog post is a hard sell. It's obviously from an app developer that would prefer not to jump through the hoops of the App Store, but as a customer, I like it.

It's not perfect but it appears to be much, much better than Google version.

What I don't like is the limited app discovery, and the bad rules in terms of apps just taking names and causing a lot of confusion so that I'm not sure if that's the app I really want to install.

</comment><comment><USER30> It's worth going back to the App Store reveal video.

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

30% might be high, and there's certainly a case to be made for conflict of interest in the Netflix/Spotify arena, but the App Store is solving a lot of problems: it's a single, universal way to get an app out to every iThing, it manages updates, and there's no nickel-and-diming in terms of processing fees or hosting or anything like that.

I thought it was in that keynote but maybe not: I remember someone comparing a 30% cut to the costs associated with getting a physical copy onto retail shelf, and if I recall correctly it was in the same universe.

</comment><comment><USER31> > Posting article ranting against walled gardens on Medium

The irony here is palpable ಠ_ಠ

</comment><comment><USER32> App Store cash is often significantly discounted. You can often buy $100 iTunes cards for $83 at Costco, for instance. This spurs on a lot of spend on the platform given that it becomes a staple gift choice for a lot of younger relatives.

Further this is all very hand-wavy about abuse without mentioning the benefits that very same platform provides. It makes the whole discussion around it completely specious because it's inventing a victimization.

</comment><comment><USER33> "For each card processed, a developer will pay an average processing fee of around 2% to 3%"

My understanding is that credit card processors, Stripe for example, charge $0.30 + 2.9% of the transaction amount. So for an $0.99 purchase that is roughly 33 cents. On large purchases your statement is true, but in-app purchases average $0.99.

<comment><USER34> This is one reason why microtransactions are often aggregated by either pre- selling a pseudocurrency or credit or by having the seller essentially extend you credit and capture payment after several microtransactions have gone by. You can see this on iTunes and the App Store; if you buy a song, you are unlikely to get billed for the song immediately. Apple will quietly keep a tab open for a few hours (or days!) and then wrap all purchases into a single transaction, which is much more economic for them.

</comment></comment><comment><USER35> There are many facets to this. First of all, the App Store performs a range of services. Payment processing, the app review, hosting. For the user it is a trusted platform, where credit card numbers are not transmitted to arbitrary locations on the web, the app review and the ability to withdraw malicious applications do offer quite some protection.

From this side, the App Store fee can be justified. Whether it is reasonable or to high depends on many parameters. A fair solution would be to have the fee start at 30% and decline with sales numbers, as the review process doesn't increase. Of course, large commercial entities, who do have their own servers/payment processors and don't need a trusted site to host their apps are less happy with the policies.

But beyond the discussion about the fee, there is the aspect that Apple prevents all software installations from outside the app store. This is something which has to change as Apple isn't only protecting against malware, but also limits a lot of benign applications from being available on iOS. The first thing coming to my mind is Termux, which would instantly make an iPad much more usable. And extending that, a whole range of development tools could run way better on the iPad than it is allowed on the App Store. Just imagine a Linux VM running on the iPad...

Apple should (or should be forced by regulators) to offer a Gatekeeper-like solution on the iPad/iPhone which gives the users a reasonable amount of control about their devices.

And there is of course the content question. Apple tries to enforce their idea of "morale" onto the users. This is fine for their storefront, so to say, but there should be a section in the App Store for adult content. Especially the safe payment process would make this a very attractive service. If Apple wants to keep the "service" story alive for the App Store, they should craft their services according to the user demands, not to their ideas of what users should consume and install.

</comment><comment><USER36> I believe Apple users choose the Apple ecosystem specifically because they value the protection the App Store provides. I can't even imagine the nightmare if every app was allowed to redirect me to their website, register there and enter payment information before I can start using their app. This system would be abused as hell. The in-app purchases are transparent (I can review all my transaction in one single place) and I can approve my child's purchases remotely.

Also I am sure if the roles were switched, Spotify would no way in hell allow Apple Music to be priced the same way on their App Store for their ecosystem users. It's hypocrisy.

I agree 30% might be too much, but it's their App Store, their users, their infrastructure, their public trust at stake, their rules.

</comment><comment><USER37> The restrictions and policy applied by Apple and to some extend Google makes it very hard to get traction, particularly for smaller developers.

It feels extremely risky to develop high-budget new apps in this environment as there is a real chance the app will be rejected in order to comply with hard to understand limitations or end up not being allowed to be published at all.

</comment><comment><USER38> Apple's ecosystem is one of the best out there actually, pretty seamless experience with little flaws here and there that are ok to live with or they get fixed slowly.

Compare that to the alternatives and you'll find it marginally better

</comment><comment><USER39> You could replace iOS with Android, altough it is even more broken though. Just in worse ways. Hello arbitary dev account bans with no human to answer. Byebye privacy.

</comment><comment><USER40> "monopolistic"? doesn't Apple have around 10% market share?

</comment><comment><USER41> I noticed that the author published this on a website that implements a paywall, doesn't allow much control over the look of their column, and tries to make you log into an official Medium account to read. I wonder why that is, if they're championing the open ecosystem so much?

</comment><comment><USER42> all this whining about things not being fair. they created it, you use it. stop whining. I dont like it, I dont use it, simple.

It didn't exist before, it doesn't need to exist, and its purpose of existence is not to be fair to you.

this country is turning into a bunch of bitches

</comment><comment><USER43> Is anyone familiar enough with Medium to know why someone would publish their blog on the platform, and lock users behind a paywall in order to read their blogposts?

Do they get a cut? I'm not even sure of price, but just see a screen that lets me know I've hit the end of my "Member Preview".

</comment><comment><USER44> I pay taxes

</comment><comment><USER45> Non-paywall link: [https://web.archive.org/web/20190729173504/https://onezero.m...](https://web.archive.org/web/20190729173504/https://onezero.medium.com/youre- paying-into-a-broken-system-whenever-you-buy-something-on-ios-3f3aa88ecf8c)

</comment><comment><USER46> He is complaining about payments in Apple Store using annoyingly paywalled medium.

As an iOS Developer I think that's 30% cut is fair and it works. Just look at sales numbers on iOS vs Android. Most of sales comes from iOS. As a user I hate then devs decide to skip MacOS store. For me it means I have to use some 3rd party payment and license management solution so they can save some money.

</comment><comment><USER47> "Solution"

Something something "... should..." something something "... should..."

That's not a solution. That's not even hope. That's dreaming.</comment>


This is CS50 Companion Tool Helping you hack CS50 concepts and psets - <AUTHOR> http://cs50.learnifi.com/

<comment><AUTHOR> This tool gives you free access to CS50 supplementary resources, structured in a way that they won't consume more than 10 minutes of your time at a stretch. The resources, crafted by ex-CS50 students, give a better understanding of the concepts and the problems faced in psets. It would be really amazing to have people here as early users, please do sign up. Thanks.

Screenshots here: [http://imgur.com/a/0LrgX](http://imgur.com/a/0LrgX)</comment>


Can Yahoo Be Rescued? - <AUTHOR> http://www.nytimes.com/roomfordebate/2011/11/02/can-yahoo-be-rescued/ <comment><USER2> The debaters suggestion is that Yahoo need a miracle, aka a Steve Job to bring innovation and focus. Sounds like the leaked memo urging employe to "accelerate innovation, reignite inspiration, and give our users what they want now". If only someone sent that memo sooner !

</comment><comment><USER3> Three words: nope. Nope. Nope.</comment>


R is a joy if you treat it like Awk - <AUTHOR> http://dwrodri.blog/posts/oct-7-Rscript-snippets.html <comment><USER2> I use R a lot, and nothing in this post rings even the slightest bit true to me. This guy's use case for R seems to be very unlike almost anyone I've ever heard of. Towards the end of the article, when he's talking about how all he really needs from R is the summary() and boxplot() functions, it really becomes clear that he's never done anything more than dip the very tip of his pinky toe into R.

There are lots of valid criticisms of R, but this article doesn't touch on them. It's so off-base that it's the proverbial "not even wrong".

<comment><USER3> Its definitely a n00b criticism; R is absolutely the shizznits for cleaning and transforming data. You have to use data.tables for larger data sets, but (God Bless Wes) it can't really be beat for this; it does an amazeballs job and has every doodad you can imagine for making your life easier.

Cleaning a broken csv or whatever: no, it is crap for that. You use awk/sed/tr and all that for such problems.

If you're the type who don't want to deal with R, I guess you can use it from the CLI. A couple of the R deploys I've done work like this.

The real problems with R are .... oh man .... so many. R inferno covers a lot of them as a language/environment. Weak database connectivity is another one. The thing which makes me batshit is the nodejsbro-ification of the package management system. Aka people chaining together things like node works; R's package manager isn't designed for this. But also the way code, packaged and otherwise simply rots between the many, many upgrades.

You could probably run and deploy scikit learn/pandas based code from 5 years ago without much problem. In R, you have to make a build with the salted package dependencies ... and for all I know stuff it in docker.

Anyway unlike python, it basically has every data transformation and statistical tool under the sun. I guess this is the price we pay.

<comment><USER4> Is R really that good for data cleaning and transformation? It's slow, single threaded (yes, even for a lot of real-world use-cases with data.table) and memory-hungry. People only ignore this because code is generally written from the top of a notebook down to the bottom without ever being re-run.

<comment><USER5> A popular counterpoint in the R community is that in many data cleaning tasks, the bottleneck is human understanding / coding time, not comptutation time. In other words, we'd rather spend 1 hour writing up a script that runs in 10 minutes and needs to be run a handful of times at most, than spend 6 hours writing something that takes 10 seconds.

Edit: This of course goes hand-in-hand with the claim that it is easier/faster to write R scripts. If you're not familiar with it, the tidyr and dplyr packages in particular (part of the tidyverse) are fantastic in the verbs they provide for thinking about data cleaning.

</comment></comment></comment></comment><comment><USER6> I use R on a daily level. A significant portion of our climate change adaptation research code and decision planning systems (which are used in various utilities around the world to support decision makers) are built using R.

I understand what the author is stating, but I just feel like this is from inexperience with R and ignoring the vast amount of packages available within it that are specifically targeted at data science. There are some valid issues and criticisms of R, but I think this article only focuses on the application of R in a single context. A significant portion of data science is about cleaning the data and an entire suite of packages known as tidyverse solves these problems (for me anyways) while also being very simple and easy to understand. I mean tidyverse supports piping, which is exactly what this article is saying to use.

Obviously your mileage may vary, but this post irks me the wrong way.

<comment><USER7> The tidyverse is excellent, and has its own stylistic choices that are arguably quite good. A lot of other random packages also have their own stylistic choices and they are not good. So I suppose I would say that R makes it really easy to write data pipelines well, but also really hard to write them poorly; and doesn't make it very obvious on what the better choices are.

<comment><USER3> If only Hadley hadn't picked snake-case, which doesn't work so well out of the box with ESS. Yah, I know there is a way of fixing this with a setq in ESS, but I shouldn't have to.

<comment><USER4> Always weird to meet Emacs people who don't like having to customise Emacs. That said, ESS has some weird defaults, not sure I'd lay them at R's door tbh.

<comment><USER3> ESS defaults predated Hadley's contributions by a decade, making his seemingly unique adoption of snake case _extremely_ unsociable. I actually use _ to <\- a lot. It's enough of a pain in the ass, I basically stopped using his packages. This was annoying, but ultimately the Hadleyverse became a bridge too far for the kind of bread and butter data science I do, so it turned out to be helpful to me personally.

</comment></comment></comment></comment></comment><comment><USER8> For historical context, R was not initially intended to be a standalone scripting language runnable via POSIX conventions and didn't gain these features until circa 2010. R is designed to be used interactively, like the S language it was based on, a style later made familiar to students via MATLAB and TI graphing calculators. Before Rscript it was common to hack together shell scripts that cope with the expectation of human TTY input to run R in production, which functioned well as a "you must be this tall to ride" sign for people who might not appreciate how unreliable R code can be compared to a traditional language.

</comment><comment><USER9> The precursor to R, S, was designed as a Unix tool, and pretty much implicitly relied on awk as its data-cleaning preprocessor.

For those who come from the world of large enterprise statistical and data reporting tools such as SAS, awk shares an exceedingly strong resemblance to the SAS DATA step, whilst R effectively provides a host of analysis and graphics tools the correspond to numerous other SAS procedure and products.

The hacks for pipelining R are cool and useful. Thanks.

</comment><comment><USER10> > In my experience, just about anything beats R when it comes to cleaning > dirty data.

> I used to resent R, it was shoved upon me as a strange tool that promised to > replace Python, but failed miserably.

well I'm glad the author found a way to make R work for their purposes, but this just reeks of inexperience with R..

<comment><AUTHOR> I am definitely inexperienced with R. The intention of this post was to highlight a key point of friction I encountered throughout my introduction to the language. Namely, I was introduced to R (by someone more senior than myself) as "data science in a runtime/IDE", but there quite finite boundaries where the conveniences of R stop and other tools begin.

What motivated me to write this post was the lack of discussion of R in this use case. I actually stumbled into using "Rscript -e" one liners while looking to do basic stats in a Linux CLI.

That being said, I still stand by my point. Taking data from "out in the wild" (log files, tarballs of images, unstructured text) and making use of it can be frustrating in R because cleaning up edge cases, removing unwanted data, and getting everything into the correct container/type often involved unintuitive chaining of function calls. This is coming from the perspective of someone who worked with Python/awk/sed prior to being exposed to R.

If you have good counterarguments, I'd be more than happy to hear them and addresss them in an end note in the post.

<comment><USER11> Have you ever used the tidyverse ecosystem? It's a set of syntacticly- compatible package authored chiefly by one man, which have evolved into a superset of R, if not an outright R2. (R's Scheme lineage makes it very hackable in this way).

I've working on python for my current project and constantly longing for R's syntax specifically for cleaning data. It's so much better.

Just last night, I wanted to perform an anti-join to find discrepancies between two data sets for debugging

One line in R:

       anti_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))

Witchcraft in Pandas: (from stack overflow):

       Method 1
       # Identify what values are in TableB and not in TableA
       key_diff = set(TableB.Key).difference(TableA.Key)
       where_diff = TableB.Key.isin(key_diff)

       # Slice TableB accordingly and append to TableA
       TableA.append(TableB[where_diff], ignore_index=True)

       Method 2:
       rows = []
       for i, row in TableB.iterrows():
           if row.Key not in TableA.Key.values:
               rows.append(row)

       pd.concat([TableA.T] + rows, axis=1).T

I actually fired up R and re-imported the .csv data just for this. Took 15 secs while my colleague was still stuck debugging his own weird for loops.

<comment><USER12> Nothing beats building stuff in software that just works with a simple small interface while being powerful!

May I ask what you use R for? I like learning languages for fun and I've been meaning to do some NBA analytics stuff. I'd love to have a REPL style interface to just do one-off math and analytics or short scripts. I haven't dug into the data science stuff yet but I'm disinterested in Python for some reason (maybe because I used to write Ruby for a living).

<comment><USER11> I started using R because I needed a better tool for formal statistical analysis. (Econometrics, didn't want to pay for STATA. Much better packages around variants of linear regressions + panel/time series data than python). Since, I've used it for some random scripts, data visualizations, and financial analysis (Josh Ulrich's packages + tidyquant).

R is a thoroughbred at doing data analysis from your laptop. It's bad at living on a server and operating any sort of app.

For your use case (NBA analytics) I think it is a great tool and would recommend R. In fact, here are a couple packages/tutorials specifically for doing that: [http://asbcllc.com/nbastatR/](http://asbcllc.com/nbastatR/) [https://blog.revolutionanalytics.com/2016/09/analyzing- nba-b...](https://blog.revolutionanalytics.com/2016/09/analyzing-nba- basketball-data-with-r.html)

</comment></comment></comment></comment></comment><comment><USER13> "R is only great if your data is already great."

Disagree. R has an incredible ecosystem for parsing, cleaning, and manipulating data. Even ignoring the tidyverse, base R provides more than enough functionality to clean and analyze data--you just need to spend some time learning it. If you use the tidyverse, it's even easier. The only other ecosystem that comes close to R is Julia, which was designed taking many of the best parts of R into consideration.

<comment><USER14> How would you go about parsing logs in R?

The problem with logs is that lines have different number of columns depending on what that line is logging.

What a given line is logging can usually be determined by a regex (e.g. ends with a ip-address, starts with this words, etc., etc)

I'm genuinely curious, as this is a use-case where I have a lot of difficulty using python or R. I can see how grep + awk are strong as a preprocessor, as they can scan through a larger than memory file, and select columns from rows that match your criteria.

<comment><USER13> I was just doing this yesterday--the "base R" way would be to simply use readLines() and grep through the same way you would in the command line. You're right though, grep + awk are super useful and parsing larger-than- memory logs is where they really shine and the shortcomings of R become apparent.

However, if your data fits in memory and you have a non-trivial analysis to perform, R is a great choice. I had a file with tabular data interspersed with metadata at random points and it was straightforward to parse and store the data in a custom data structure.

</comment></comment></comment><comment><USER15> R has lots of packages available for data cleaning. They just aren't necessarily included in base R. Most of the ones I'm aware of are in the Tidyverse. Even if you're dealing with a hand-written Excel file with multiple tables in the same sheet and various information encoded in text/background colors and such, there's they tidyxl package to help you do that.

</comment><comment><USER14> I haven't worked with logs, but I do find R a joy to work with in general, especially the tidy verse is a joy to use, but slow and memory hungry on very large datasets.

I haven't found a good way around very inconsistently formatted csv files in any language (a row only represents column 3,4 and 6 if it starts with a comma, all other rows have all columns, but are space separated and values may contain comma, etc, etc)

</comment><comment><USER16> R isn't a joy, but it is powerful. This is the best blog post I've read on the matter: [https://www.talyarkoni.org/blog/2012/06/08/r-the-master- trol...](https://www.talyarkoni.org/blog/2012/06/08/r-the-master-troll-of- statistical-languages/comment-page-1/)

</comment><comment><USER17> If you want to treat R like awk, you should really check out the littler package, a super useful R package which provides an alternative to both Rscript and R CMD BATCH designed for writing one-liners [https://github.com/eddelbuettel/littler](https://github.com/eddelbuettel/littler)

</comment><comment><USER18> To be honest I don't find Python to be very useful for data cleansing. Full disclosure I use R quite a bit and use Python sparingly.

If you want to use R for data analysis I suggest the R package Tidyverse or use a product like OpenRefine.

If you just need to run summary statistics with an application then using Python is just fine.

<comment><USER19> What part of it you dont like? I use Python for data manipulation on a daily basis and I find it very useful.

<comment><USER20> The pandas syntax is far less intuitive than R dataframes, especially if you're also using dplyr.

<comment><USER18> Agree. Pandas seems to be a mixture of Python indexing syntax and R dataframes.

</comment></comment></comment></comment><comment><USER21> I get what the author is saying -- I use R in shell scripts too. It's really useful and composes well with other shell tools.

I also get what the commenters are saying, because R is a useful interactive language too, and it's also pretty good for data cleaning. Although it's significantly slower than Python, which is why I do all cleaning that cuts down the data before loading it into R.

As an example, I generate some benchmarks with every release of Oil:

[https://www.oilshell.org/release/0.7.pre5/benchmarks.wwz/osh...](https://www.oilshell.org/release/0.7.pre5/benchmarks.wwz/osh- parser/)

and the tables are manipulated with R, but running the benchmarks is done with shell, and creating the HTML is done with Python:

[https://github.com/oilshell/oil/blob/master/benchmarks/repor...](https://github.com/oilshell/oil/blob/master/benchmarks/report.R)

(and yes this page is meant to be motivation to speed up my principled but slow shell parser)

R and tidyverse are the best tools for manipulating tables by far. I wrote an intro here:

 _What Is a Data Frame? (In Python, R, and SQL)_ [http://www.oilshell.org/blog/2018/11/30.html](http://www.oilshell.org/blog/2018/11/30.html)

</comment><comment><USER22> I used to use awk all the time whenever I wanted to evaluate specific portions of a columnar file (With a short one liner). Python comes close but, awk is much faster. In conjunction with SED, I think that is a little much and imo exceeds what I was doing. If I need to do any replacing or 'cleaning', I would then use something like Python or SQL.

</comment><comment><USER23> So, this is not about the article. I've recently started using rpy2 as a python wrapper for R functions and libraries and I'm finding that it is not that bad.

There is some performance issues, but I am OK to trade that off for the convenience of using "try:" rather than R's "tryCatch". Having tryCatch as a function rather than built into the syntax is unacceptable to me. But there are some libraries in R that don't have elegant alternatives in Python or which you have multiple options or perhaps not the time to unlearn.

</comment><comment><USER24> Here is how I like to use R, which can use the authors more introductory methods or full fledged data crunch:

Like I do all my other data sources, as code blocks inside an emacs-org notebook. If you are doing data science, you quickly find that it's management and combination of the various particular projects that becomes the most daunting (imho), and your data science notebook becomes the most important part of that organization. In that arena for me it's pretty much either jupyter or emacs org-mode.

</comment><comment><USER25> The regex stuff in stringr, and read_csv from readr are adequate for almost anything if you're talking about ordinary delimited file import.

What does awk give you that these don't?

</comment><comment><USER26> Something to bypass while you reach for your Perl interpreter?

</comment><comment><USER27> R is really overkill here. Simpler and nicer tools exist if you want to munge data on the command line and/or plot it. For instance:

[https://github.com/dkogan/feedgnuplot/](https://github.com/dkogan/feedgnuplot/) [https://github.com/dkogan/vnlog/](https://github.com/dkogan/vnlog/)

<comment><AUTHOR> I love CLI tools like these. Great find!

</comment></comment><comment><USER28> "R is a joy if you don't use it."

Joke. I am a heavy R user.

</comment><comment><USER29> I've recently discovered the pipe command allowing R to consume the result of a terminal command's output (link: [https://youtu.be/RYhwZW6ofbI](https://youtu.be/RYhwZW6ofbI)). Quite useful for reading in compressed files and it's made me learn a bit of awk to fix text files on the fly

Oh and there's also Rio if you want to explore injecting R into your command line workflow.

</comment><comment><USER30> If you're interested in learning how to do data cleaning and restructuring in R, I highly recommend the "Wrangle" chapters of Hadley Wickham's R for Data Science book, which you can read online here: [https://r4ds.had.co.nz/wrangle- intro.html](https://r4ds.had.co.nz/wrangle-intro.html)

</comment><comment><USER31> I don't want to post something inflammatory or condescending, but it's very clearly that the author does not have experience using R.

</comment><comment><USER32>
        awk '/Recovery time:/{print $2}' output.log | boxplot

</comment><comment><USER33> dwodri: Not sure if you're a MacOS user, but iTerm2 distributes a script to display images inline in the terminal. I've forgotten how to get R to output png data directly to stdout, but it could be nice to do that and display the images inline in the terminal

[https://www.iterm2.com/documentation- images.html](https://www.iterm2.com/documentation-images.html)

<comment><AUTHOR> I do in fact use macOS, but I'm more preferential towards kitty[1]. Sadly, OpenGL is getting deprecated in macOS Catalina so I will probably crawl back to iTerm2 eventually.

I'm quite familiar with asciinema[2] as well, which I've considered using for creating animated examples. In general, I like to err on the side of caution, and optimize my website for people with poor/metered connections.

Also, I didn't expect this to get this much attention! Mea culpa for not putting more work into the post itself.

1 = [https://sw.kovidgoyal.net/kitty/index.html](https://sw.kovidgoyal.net/kitty/index.html) 2 = [https://asciinema.org/](https://asciinema.org/)

<comment><USER33> We might be miscommunicating! Or if not, sorry if I didn't understand what you said in reply.

What I was trying to say is: how about extending your blog post with one line to show people how to make the boxplot appear in their terminal as soon as they run the command? (I think at the moment it's going to appear as a PDF file named Rplots.pdf in the current directory, right?)

<comment><AUTHOR> This is correct. A good cross platform tool for rendering images in many modern terminal emulators is imgcat[1]. iTerm2 appears to use this under the hood.

1 = [https://github.com/eddieantonio/imgcat](https://github.com/eddieantonio/imgcat)

</comment></comment></comment></comment><comment><USER34> Rscript can also be used to run R scripts from the command line. Just put >#!/usr/bin/env Rscript on the first line.

</comment><comment><AUTHOR> OP Here: I'm aware of some CSS issues on mobile and will work to fix them shortly.

UPDATE: fixed color palette issue, although it still looks quite bad.

<comment><USER35> FWIW `scan()` is going to be much faster if you are just reading doubles from standard input than `as.numeric(readLines())`.

</comment></comment><comment><USER36> Lots of people don't realize this, but R is very similar to JavaScript. Shiny apps offer a nice functional web framework too.

<comment><USER37> That gives me even less incentive to try it out.

</comment></comment><comment><USER38> _> Half-assing something in Unix can produce great results as long you chose the right half of the ass._

That is a great quote!

</comment><comment><USER39> for that simple use case gnuplot is even better than R

</comment><comment><USER40> Awk is one of the few tools that possesses the ability to make me beg for death.</comment>


Let's Build a Simple Interpreter, Part 2 - <AUTHOR> http://ruslanspivak.com/lsbasi-part2/

<comment><USER2> From the post:

 _As Ralph Waldo Emerson said:_

 _"If you learn only methods, you'll be tied to your methods. But if you learn principles, you can devise your own methods."_

This was one of the main points of "The Trial of the Gang of Four" at OOPSLA '99\. Everyone was so busy talking about the patterns that they spent little time thinking about the principles that the patterns were supposed to be talking about. Programming Patterns were also meant as a literature for programmers, not as cookbooks.

Maybe this is a bit misguided. Cooks start out following recipes, then learn to apply principles. Recipes can't keep cooks from making bad food, but they can often help cooks make acceptable or even good food.

<comment><USER3> Off topic, but the attribution of that quote to Emerson is probably bogus.

[https://www.google.com/search?tbo=p&tbm=bks&q=principles+met...](https://www.google.com/search?tbo=p&tbm=bks&q=principles+methods+inauthor:%22Ralph+Waldo+Emerson%22&num=10)

<comment><USER2> Good to know!

</comment></comment></comment><comment><USER4> Those are some pretty heavy reading recommendations for a fairly simple exercise in Python. I wouldn't generally go from making a calculator to working on a compiler. If one were to read a book on compiler theory and design with the intention of writing a compiler, I would recommend the book Engineering a Compiler, however. The book is based on a course taught at Rice University that is fairly comprehensive.

</comment><comment><USER5> Protip: always start a Part N post w/ a paragraph saying "If you haven't read Part N-1, here it is blablabla".

(Wow, I feel like patio11 now)

<comment><USER6> The link is fairly close to the beginning but not right at the top. It consists of the words, "Part 1" with a dotted underline so it would be easy to miss.

<comment><USER5> Oh, I found it now!</comment></comment></comment>