OS X – Safe, yet horribly insecure - <AUTHOR> http://allthatiswrong.wordpress.com/2011/06/23/os-x-%E2%80%93-safe-yet-horribly-insecure/ <comment><USER3> Although it's not officially documented, Snow Leopard's sandbox is already quite capable and easier to use than the norm; it's nonsensical to list "sandboxing" and "mandatory access controls" as wins for other operating systems. Lion will make it mandatory for all App Store apps and add features like a secure open dialog (where the OS handles the open dialog and gives the app access to only user-selected files) and an easy-to-use privilege separation API (to make it easier to take advantage of the sandbox); the result is much more advanced than anything mainstream in Windows or Linux. Lion will also get rid of previous limitations on DEP and ASLR; in particular, it randomizes dyld.

The article also seriously underestimates the benefit of the centralized App Store model (which has an equivalent in Linux, but not Windows); despite all the horrible rejections and review issues, if it becomes the usual way to obtain Mac applications, it will greatly reduce the chance that users will come into contact with malware.

<comment><USER4> I want an optional feature which only allows the OS to execute MacAppStore programs.

This would be "grandparent proof" and would prevent trivial kinds of social engineering used by MacDefender (which targeted clueless users).

<comment><USER5> If they did this (even as just an option), then there'd be an uproar about how they're incrementally making os x a completely closed system (a walled garden).

<comment><USER6> They've already done it. It's an option under parental controls.

<comment><USER7> Confirmed. I just checked in Snow Leopard. I would totally do this for clueless people, too.

</comment></comment></comment></comment></comment><comment><USER8> "The Unix Design is significantly less granular than Windows..."

That's why it's more secure. Complexity means you don't know what's going on. Complexity means you will forget something. Complexity means there's more likely to be a way to squeeze through, more likely to be a bug, more likely to be a little thing that is forgotten.

This is also a problem with complex cryptographic APIs, overly complicated things like PKCS11 and X.509, etc. It's curious that security-related systems are among the most complex, since complexity is inherently bad for security.

I call it a lack of "situational awareness."

<comment><USER9> I'm sorry but this is a horrible argument. Granular security is critical to having a system that can actually be locked down. Which is why SELinux support is built into the kernel now.

<comment><USER10> And from my experience, most admins turn it off immediately rather than rewriting security policies so that Apache can access data outside of /var/www/, etc. Sure you could modify the policy, but it's enough of a hassle that no one I know has ever done it.

Restrictive security that just gets in people's way is terrible security. Just like forcing people to change their password every 14 days results in people using the same password repeatedly and incrementing a digit on the end (or writing the password down and sticking it on their monitor), creating overly complex rules means that people who absolutely must deal with these things (or who have the time) do so, and everyone else just turns it off and forgets it ever existed.

<comment><USER11> I'm glad I'm not the only one that hates SELinux. I find its setup to be super complicated yet all it ends up doing is stuff that I can do anyway with native unix permissions. As best I can tell it's a completely parallel world that is just there in case you mess up your normal permissions.

<comment><USER9> You admit that you don't understand SELinux so could it be that you hate it because you don't understand it?

The fact is there are a _lot_ of things that SELinux makes easier. In SELinux you have your services run in contexts and you can say what they can do (e.g. can listen on port 80 but not make outgoing connections, etc.). You no longer have this ridiculous need to run as one user (root) and switch to another.

Unix security is so simple that, for my tastes, it's actually _more complex_ to set up securely than SELinux. If you use a distro that supports it SELinux is drop dead simple anyway.

</comment></comment></comment></comment></comment><comment><USER12> _They often share vulnerabilities with core libraries in other UNIX like systems with samba and java being two examples._

Good thing that Lion jettisons both (Samba for going GPLv3, and Java is non- core download)

 _The firewall functionality in OS X is impressive, but hardly utilized. The underlying technology is ipfw_

Also changed in Lion, which now uses OpenBSD's pf. Apple doesn't make much more use of it though.

 _It has been a shame to see the sandboxing functionality introduced in Leopard not being utilized to anywhere near its full capacity._

That's changed as well in Lion, as any Mac App Store developer can tell you.

<comment><USER13> OpenBSD's pf? I highly doubt that Jordan Hubbard took the OpenBSD tree's variant. More likely it came directly from FreeBSD.

(Yes, I know that 'pf' started on OpenBSD.)

<comment><USER14> what have freebsd contributed to pf?

<comment><USER13> don't get me stared on the lamefest that is OpenBSD

</comment></comment></comment></comment><comment><USER15> Just as a curiosity: yesterday I watched a talk by Thomas Ptacek at some indie Mac dev conference where he showed, _en passant_ , how some kludges used by Apple produced vulnerabilities in Mac OS X. It's old, fixed stuff by now, but I was like "WTF?" all the same. Because it's very stupid stuff from Apple.

Here's the talk, slides (check slide 11), and related blog post:

<http://www.viddler.com/explore/rentzsch/videos/31/>

[http://www.slideshare.net/tqbf/c42-software-security- present...](http://www.slideshare.net/tqbf/c42-software-security-presentation)

[http://chargen.matasano.com/chargen/2009/9/24/indie- software...](http://chargen.matasano.com/chargen/2009/9/24/indie-software- security-a-12-step-program.html)

</comment><comment><USER16> > A lot of OS X users seem to have this idea that Apple hired only the best of > the best when it came to programmers while Microsoft hired the cheapest and > barely adequately skilled...

Is this really a commonly held belief? I've never encountered anyone expressing this opinion.

<comment><USER17> It's possible some people might believe that, perhaps not HN readers But the quality of the management plays a very important role in the quality of the end result: Apples has Jobs and Microsoft has Ballmer. So Microsoft is at a disadvantage human-resource-wise.

<comment><USER18> As an engineer (though admittedly one at Microsoft), Steve Jobs seems like he'd be a /horrible/ boss. All appearances suggest that he doesn't care about good engineering, but rather that he cares about good user experience, damn the torpedoes.

<comment><USER19> This statement reveals so much about what's wrong with Microsoft...

Good engineering is good user experience.

<comment><USER20> So many of Google's products prove the contrary.

<comment><USER21> I surmise that you're misinterpreting the statement.

</comment></comment></comment></comment></comment></comment><comment><USER22> The author may have some good points, but this essay is so poorly organized that it's hard to tell what they are or put them into proper perspective. It's mostly a good argument for teaching essay-writing in school.

<comment><USER13> The piece is badly out of date when Lion ships next month.

<comment><USER23> The piece _will_ be out of date, today it is accurate and interesting. Many security specialists have been saying the same thing.

</comment></comment></comment><comment> X-Istence > _The Unix Design is significantly less granular than that of Windows, not > even having a basic ACL. The UNIX design came from a time when security was > less of an issue and not taken as seriously as it did, and so does the job > adequately. Windows NT (and later OSes) were actually designed with security > in mind and this shows._

This comparison doesn't even make sense, comparing a decades old UNIX design to a comparatively newly designed OS (Windows NT). POSIX permissions have stood the test of time for a long time and by far were much better than what was available in Windows for the longest time. Off course Windows NT has improved on what was available at the time.

That being said, Mac OS X since 10.4 has had ACL, so that argument goes right out of the window. ACL's are enabled by default and they function as designed.

      touch testing
      chmod 700
      chmod +a "otheruser allow delete"

      su - <USER2>
      ls -lahe testing
      rm testing

> _They often share vulnerabilities with core libraries in other UNIX like > systems with samba and java being two examples._

That is because they use that exact open source software. This is a simple no shit sherlock kind of deal. Luckily those are going away and won't be in Lion. Java will be an extra download, like Adobe Flash and Samba won't be included by default because of the GPLv3.

Apple's policy regarding third-party software vulnerabilities could definitely be improved, and they already have, but it could still be better. Ultimately many of the third party tools they ship are never used by consumers and even though they may be exploitable they aren't accessible to an attacker (looking at you PHP ...)

> _They are extremely difficult to deal with when trying to report a > vulnerability, seemingly not having qualified people to accept such reports. > Even if they do manage to accept a report and acknowledge the importance of > an issue they can take anywhere from months to a year to actually fix it > properly._

This has been fixed recently, they have a new head of security [1] and have increasingly shown that they are getting faster at closing bugs and bringing out updates to fix issues. Look at the Pwn2Own contest iPhone bug, Apple was notified and an update was made available that fixed only that one flaw.

Do I think they are doing the best of job? No, MSFT has them beat by a mile with their security response team (really impressive), however the above sentence makes it sound like this is still the case which is no longer true.

\--

It is a pretty good article in that it shows that there are certain issues that Apple could definitely improve upon, but completely ignoring any development to OS X for the past couple of years doesn't look good at all especially when the flaws you are attempting to point out have already been fixed.

[1] [http://threatpost.com/en_us/blogs/apple-hires-new- security-c...](http://threatpost.com/en_us/blogs/apple-hires-new-security- chief-012411)

<comment><USER24> Whether ACLs are present or not makes little difference. When a user is logged in, he either has access to do something or he doesn't. Only one line of that ACL really matters, and that's the same on a system with permission control but no ACLs (such as traditional Unix).

If the user is able to escalate his privileges (whether with UAC or sudo, the OS doesn't matter) in order to install malware then he loses.

<comment><USER25> The recent malware entirely (as I understood) depended on the user putting their password into an OS prompt for permissions for the bad program. How can the OS make the line between that and something safe like Growl or Virtualbox?

<comment><USER26> Stating the obvious: App Store only software installs, and other DRM solutions. And yes, that has a price that people may or may not be willing to pay.

It's somewhat scary, but I'm starting to think that we will be forced to adopt something like that. Computers are used for serious stuff too (payments, medicine, things like that), and, apparently, way too many people can't be trusted to administer their computers securely. Right now people are mostly damaging own life, but if this starts happening to medical records, it's going to go beyond personal security.

It's too bad, really. Even if "developer programs" were free -- i.e., just required asking the corp for a developer key (this could be enforced on state level), it would be more of a hassle than it should be.

<comment><USER25> So lets see an option in 10.8, aka Ocelot, where there is a fairly hidden button called Allow non-app store app installs, with a readable (unlike itunes eula), in Security.

</comment></comment></comment></comment></comment><comment><USER27> First, the author is right. Except his article is a boring read; repeating himself over and over and over and over again.

Yeah, I get that OSX is not secure. Now move on and tell me why.

In short, I wish the author would not write like a lawyer (unless of course he IS a lawyer).

</comment><comment><USER28> So, let's review the _actual_ exploits listed here (since, the author says, it isn't just FUD): ASLR & MacDefender... Hmm... hardly a damning criticism.

<comment><USER29> Agreed; follow the link the author offers near the top of the article to Secunia. Of a few common OSes I looked at (Red Hat Enterprise 5, Windows XP Pro, Windows 7, OS X), OS X had the fewest advisories for 2009, 2010, and 2011; most vulnerabilities seemed to be of a more benign nature than other OSes.

Perfect? Probably not, but it's _still_ the OS I'm going to recommend to my mom.

<comment><USER18> Apple has fewer advisories because it's their standard operating procedure to sit on security bugs for several months and then patch them all at once, even if their contemporaries are patching them as they appear.

If you look at the numbers for OS X as opposed to Windows XP, OS X has 1,544 vulnerabilities in 153 advisories (~10.1 vulns/advisory) and Windows has 472 vulnerabilities in 358 advisories (~1.31 vulns/advisory).

Unless you have a good reason to believe that bugs in Windows are nearly eight times "more unique" than bugs in OS X, please don't compare advisories.

</comment></comment></comment><comment><USER30> Apple did one thing very well: they ask for a password when doing something potentially harmful, but made sure that the password popup is rare enough that you won't be trained to blindly fill it in.

That one thing has more security value than any of the advanced security techniques listed in the article like "stack canaries" and "fine grained ACL".

It's too bad there are so many security consultants that focus on the technology instead of user behaviour. If they would just look at the statistics they'd see that >90% of security issues are not technology issues, they are behavioural issues.

Sure, it would be nice to have a few of those advanced security techniques in OS X if they don't cause too much usability or performance issues, but it will have very little effect on security as a whole.

<comment><USER3> However, you only need the password if you want to be root, and most of the stuff malware wants to do (including keylogging, which the article mentions; requiring root to intercept keyboards is only moderately useful if the regular user can gdb -p whatever app has the password field) does not require being root.

<comment> X-Istence If you want to attach a debugger to a program in OS X you are required to be in a developer group, and it will ask you for a password.

See: <http://i.imgur.com/l6Ntz.png>

<comment><USER3> Oh, is this new in Lion or something? I've never seen that prompt before. (But in any case, there are other options such as clever use of DYLD_INSERT_LIBRARIES.)

<comment><USER31> I think it's new in Xcode 4.

<comment><USER32> Pretty sure before then, I had this problem in Xcode 3 under Snow Leopard.

</comment></comment></comment></comment></comment></comment><comment><USER33> 11px font with 19px line height? Uf, not for my tired eyes.

Fixed with this CSS snippet: p { font: 16px "Lucida Sans Unicode", "Trebuchet MS", Verdana, monospace; }

<comment><USER34> My go-to bookmarklet for poor article design: Readable (not Readability). Someone posted it as a Show HN a few months ago and I haven't looked back since―it's incredibly fast and very customisable.

<http://readable.tastefulwords.com/>

<comment><USER4> Or the "Reader" functionality in Safari or just enlarge the Text with ⌘+ which every Browser can.

</comment></comment></comment><comment><USER35> I read until the author expressed a preference for granular ACLs rather than a less complex security model.

Security starts with an aversion towards complexity. No point in reading the rest of the article.

</comment><comment><USER36> I don't see why this is discussed so much, afaik this article just says "Windows is more secure than OSX", mentions Mac Defender and goes on OSX about market share... The same story Mac users have heard for the last 10 years. Nothing new here, moving on, and remembering the days of Melissa, Kournikova, Sober, MyDoom etc...

</comment><comment><USER37> This is actually just the tip of the iceberg for OS X vulnerabilities.

On the enterprise side, it's much much worse. AFP is heinous. Their kerberos implementations are painful.

They actually have checkboxes in OS X server config screens that say: "Prevent man in the middle attacks? Yes or No?"

<comment> X-Istence I don't know any enterprise installations of Mac OS X Server that use AFP.

As for kerberos, that is painful on any platform. At the moment at work I am trying to figure out why Mac OS X takes 10 minutes to connect to a Windows Server 2003 based file share, all I see with Wireshark is a bunch of Kerberos stuff being thrown around, whereas Windows clients connect without issues, but without ever attempting to use Kerberos.

<comment><USER18> your Windows clients are probably using NTLM (or NTLMv2), Microsoft's old, terrible auth protocol that the Windows team eventually abandoned for Kerberos. there are policy settings you can change to force Kerberos; I'd suggest Googling to see if you can find them, and see if it breaks your Windows clients as bad as your OS X clients seem to be.

<comment> X-Istence I had not thought about that, would OS X fall back to using that in case Kerberos doesn't function? Thanks for the suggestion!

<comment><USER38> You should also check the clocks on all the machines involved. Kerberos is quite finicky when the time between machines starts drifting.

</comment></comment></comment></comment></comment><comment><USER39> >Personally for me, malware is a minor threat with the impact being negligible as long as you follow basic security practices and can recognize when something looks out of place.

Likewise, with proper security knowledge, the holes that Apple leaves unpatched for months are "minor threats." For example, disabling Java in the web browser when there's a known vulnerability. It's an inconvenience, but so is having to always be on the watchout for things that are out of place.

Apple is not fantastic on security, but they are good enough for the current threat level, as long as you take basic security precautions.

<comment><USER18> with apologies to ESR: "with sharp enough eyes, all bugs are visible."

"the impact [is] negligible as long as you follow basic security practices and can recognize when something looks out of place" is a worthless statement, because the majority of users have repeatedly proven to be unable to do that (hence MacDefender, hence the largest families of malware on Windows being fake AV.)

it also makes it too easy to hand-wave away security threats. you got a trojan on your MacBook? you obviously weren't following basic security practices.

</comment></comment><comment><USER40> It is a pity the author does not include at least one Linux distro. Especially for the mentioned "targeted attacks", servers are the most likely targets.

And in the servermarket, OSx is hardly around, and is the share of various Linux servers growing larger then Windows, even.

</comment><comment><USER41> The whole article seems overly emotional and not objective at all. The only thing I agree with are that ASLR and DEP are not implemented as well as they could ( though I have not looked at it myself).

</comment><comment><USER42> found this to be salient, there's a lot of malice to be done in plain sight of an ignorant user: Root access is only needed if you want to modify the system in some way so as to avoid detection. Doing so is by no means necessary however, and a lot of malware is more than happy to operate as a standard user, never once raising an elevation prompt and silently infection or copying files or sending out data or doing processing, or whatever malicious thing it may do.

</comment><comment><USER43> Does anyone have a version of this article with an even smaller font size? Maybe something that requires a microscope to read? Size 8 font isn't blinding enough.

</comment><comment><USER44> One point I would add is that by default, Macs have Perl, Python and Ruby (I think). So it's easy to script malware or write portable tools. I'm not suggesting that these languages are insecure or should not be installed, only that a malware designer can pretty much count on having them available to use. This may make Mac/Linux cross-platform malware easier as well.

<comment> X-Istence Those applications aren't launched or available from the outside. If the user runs/double clicks on something it is already game over. Social engineering attacks are never going away so long as humans are humans and want to see Anna Kournikova naked.

</comment></comment><comment><USER45> Is it only me who find it funny that the name is allthatiswrong given how many factual errors there are in there. :) Can't quite make up mind if the author is trolling or if he have just failed to read up on the topic he tries to school us in.

</comment><comment><USER46> All things said and done , one of the biggest flaws will be both Unix and Max giving a user the sense that both are secure and nothing can go wrong. That is the same reason Mac Defender worked.

</comment><comment><USER47> I was struck by the part about the OSX ASLR implementation. I can't believe they only randomize library loads :-/.

<comment><USER48> It is weird, but ASLR and DEP are regularly bypassed, anyways.

</comment></comment><comment><USER49> The blog post wont open on an iPad...

<comment><USER48> You need cookies enabled to get past their interstitial ad.

</comment></comment><comment><USER50> personal opinion about security is all well and good but they wont make you any more or less secure

either for what its worth osx really provides nothing impressive on the security front

</comment><comment><USER51> I wouldn't go so far say Mac is more secure than Linux, both are Unix-based. As for my user experience, Mac OS X is by far the best.</comment>


Writing Bug-Free C Code (1995) - <AUTHOR> https://www.duckware.com/bugfreec/index.html

<comment><USER3> This is very old, so it isn't even aware of C99 which leads to lots of bogus suggestions and tips.

Unless you _know_ that you're going to be targeting truly ancient architectures/platforms, C99 really is the absolute minimum thing to be using these days when developing in C. It's 15 years old, it's not "new" or "non- standard" or "non-portable".

 __Edit __: Of course I 'm aware that Visual Studio doesn't support C99, so I guess that sorts under "truly ancient architectures/platforms", then. For C development, Windows' flagship development environment is ancient. I know it's a great IDE, but it's not a great C compiler since it doesn't support the language any more.

<comment><USER4> Microsoft's official position is that any greenfield project should be in C++ and for those developers that really want a C compiler there are other options.

Specially in a world where most APIS are either .NET or transitioning to COM/Windows Runtime.

At last year's "Connect(); Microsoft Visual Studio vNext & Azure", they confirmed the C++ focus for native code, besides the upcoming .NET Native.

[https://channel9.msdn.com/Events/Visual-Studio/Connect- event...](https://channel9.msdn.com/Events/Visual-Studio/Connect- event-2014/029)

The C99 support that has been added was what is required by C++ standard and some specific customers.

Even the new C runtime is actually implemented in C++ with the functions exposed as extern "C".

[http://blogs.msdn.com/b/vcblog/archive/2014/06/10/the- great-...](http://blogs.msdn.com/b/vcblog/archive/2014/06/10/the-great-crt- refactoring.aspx)

<comment><USER5> I believe the upcoming .NET Native applies only to Windows Store apps, not to Windows Desktop apps, which I find it is a pity.

<comment><USER4> You always have NGEN, besides this is v1.0. They are pretty open that it might change in the future.

Personally I think it is bound to the adoption of the Windows Store and the Universal App model.

</comment></comment></comment></comment><comment><USER6> A couple of years back I worked as a programmer maintaining and extending a Windows application whose development had started in 1993. Besides teaching me to hate the Win32 API with vigor, that job and the application taught me - <USER2> motivated me to learn - a lot about C. About halfway through my time at that company, I came across this book, and I really liked it. Those were interestings times. ;-) We used OpenWatcom, whose debugger sucks really hard - basically, the moment your program crashes, you cannot inspect any of its state with the debugger, which pretty defeats the purpose of a debugger. The profiler sucked even harder. It was a PC-sampling profiler, and once the number of samples exceeded some magical value, it crashed, taking the program down with it. The compiler itself never gave me any problems, though, and it came with good documentation. It was also one of the few C compilers left that could target DOS. (Don't laugh, more recently I had to write a small program for DOS to set the serial port on a machine attached to an industrial control system to specific parameters.)

Sorry for rambling, but this brought up some pleasant memories... :)

I think the title is a bit strongly worded, but other than that it is a really good book. When writing large-ish applications in C, one has to develop strategies for dealing with some of C's problems, and even if you disagree with some of the author's suggestions (or, as somebody else pointed out, find them obsolete because of C's ongoing evolution), it gets you thinking about those issues.

EDIT: Whether C is the right language for writing large-ish applications is a different issue, but in the early nineties, it was a relatively prudent choice, and if a program is popular/useful enough, someone has got to do the maintenance.

</comment><comment><USER7> The title reminds me of a book I used to have years ago called 'Writing Bug Free C Code for Windows'. It was a great and not windows specific all all, covering object systems and all the nooks and crannies of the language. It was on par with some of the Lisp books I have regarding coverage of language features. Highly recommended for those interested in what you can do with C, but I'm sure it's impossible to find these days.

<comment><USER8> >The title reminds me of a book I used to have years ago called 'Writing Bug Free C Code for Windows'.

Actually this is a link to that book..

<comment><USER7> D'oh. Guess I should read the article sometimes before I comment :)

<comment><USER9> It might ease your mind knowing that your lisp mention made me mirror the webpages. Maybe if you read it beforehand you'd write a different comment, and I'd never read it myself.

</comment></comment></comment></comment><comment><USER10> Oh no! I've been going around telling my clients that you can only verify the existence of a bug, not their absolute absence, and that expected behaviour from years ago may not always match what you expect today. I hope none of them see this, and realize that I'm just too lazy to properly install the Windows debug kernel.

</comment><comment><USER11> "Variables should be named using Hungarian notation."

Please note that this is from a different time and space, and that you should not apply such rules to every language.

</comment><comment><USER12> "Error 403 - Forbidden" \- anyone else getting that?

Archived: [https://web.archive.org/web/20150327121925/http://www.duckwa...](https://web.archive.org/web/20150327121925/http://www.duckware.com/bugfreec/index.html)

</comment><comment><USER13> Wrapping library functions is very helpful when I am doing my own project. I understand the interface and can fix any misunderstandings I had when I used the standard functions. It is great.

However, when I run across someone who helpfully wrapped the standard interfaces in the code I need to maintain. I want to burn him alive.

</comment><comment><USER14> A classic but not well-known C resource.

<comment><USER15> Thanks a lot for the link. :)

<comment><USER14> Thanks to the OP.</comment></comment></comment>


How to Defend Against DDoS Attacks - <AUTHOR>

http://www.securityweek.com/content/how-defend-against-ddos-attacks <comment><USER2> You need to put the URL in the URL field, not in the text field. However, here it is, clickable:

[http://www.securityweek.com/content/how-defend-against- ddos-...](http://www.securityweek.com/content/how-defend-against-ddos-attacks)

You seem to be new here, so I also suggest you also read these:

\+ <http://ycombinator.com/newsfaq.html>

\+ <http://ycombinator.com/newsguidelines.html> <http://ycombinator.com/newsfaq.html></comment>


Transactional Email Best Practices - <AUTHOR> https://speakerdeck.com/wildbit/transactional-email-best-practices <comment><USER2> I think when a company sends email, they should treat it as a two-way communication medium. Doing anything else (a no-reply etc) makes it unnatural and sometimes alienating. At the worst, atleast another email-address should be specified in the email, where a company representative can be contacted.

Often a no-reply email gives a feel of "This is what I have to say, Please don't bother me with your thoughts/opinions/queries"</comment>


Ask HN: Has anyone noticed Amazon Prime become much slower? - <AUTHOR> I loved in Atlanta and I noticed the prime guarantee delivery for most of prime purchase is now 4 days. Anyone knows why it might be the case? <comment><USER2> Some sort of virus or something I think.

[https://www.cnbc.com/2020/03/15/coronavirus-amazon-says- item...](https://www.cnbc.com/2020/03/15/coronavirus-amazon-says-items-out-of- stock-deliveries-delayed.html?&qsearchterm=amazon)

Amazon warned it's experiencing Prime delivery days and running out of stock of popular household items amid the coronavirus outbreak.

Also here's a related blog post by Amazon [https://blog.aboutamazon.com/company-news/amazons-actions- to...](https://blog.aboutamazon.com/company-news/amazons-actions-to-help- employees-communities-and-customers-affected-by-covid-19)

<comment><USER3> I would also imagine that contract or by-the-box delivery drivers are staying away in times like these. They've established a fund for drivers impacted by this all, but that labor segment is hustle-and-split.

</comment></comment><comment><USER4> Amazon is up 289% YoY right now, give them some slack.

<comment><USER3> By what yardstick?

<comment><USER4> Sales</comment></comment></comment>


Pharo, the Modern Smalltalk - <AUTHOR> https://medium.com/smalltalk-talk/behold-pharo-the-modern-smalltalk-38e132c46053 <comment><USER3> Is there a snippet of example code to look at? I browsed the pharo.org website, but couldn't find an example to give me a taste. I even tried googling "pharo example" and with a brief look at the results didn't find an example.

Today, there are hundreds of programming languages competing for attention. It is in your interest to put an example front and center of why one should spend time looking into yet another programming language.

<comment><USER4> I've always found the 'image' environment to be far more interesting than the language of Smalltalk itself. If you do find just code snippets, you're missing out on what I, at least, see as the most significant feature of the whole thing. The way it goes about defining the code is clunky, but the overall structure of 'images' and the workflow involved with them is fascinating. I could easily see something similar being the future of containerization when implemented in some other language.

<comment><USER5> That image environment sounds scary to me. I used to do a lot of hardware development, and what I love most about software is that you can always restart from the clean plate (by restarting the program) and/or undo your previous work (with version control).

From what I understand, none of this applies to Smalltalk. You always modify code on the fly, so you may end up with properties which exists, but no current code ever sets them. Or your program ends up in the invalid state, and you have no idea why -- is it a genuine bug or did it happen few minutes ago, when the function was still incomplete?

<comment><USER6> _what I love most about software is that you can always restart from the clean plate (by restarting the program) and /or undo your previous work (with version control)._

That's what I loved best about Smalltalk. You could just hard quit out of the image, then go back to the Change Log and replay all but the last few changes. If you save off an image every day or so, you're always back in minutes, no matter how dangerously you've been coding.

There are a variety of utilities which let you load code quickly. Most often, deployment was done using one of these loading onto a clean or a stripped image. You can certainly control changes to your environment. In fact, I'd say you can often control them more easily than in other environments.

 _you have no idea why -- is it a genuine bug or did it happen few minutes ago, when the function was still incomplete?_

The Change Log makes it very easy to figure that out. All of your ad-hoc "command-line" (do-it) state changes to the image are recorded there as well.

<comment><USER7> This is a great insight but when I read things like this it reminds me the Smalltalk advocates need to do a better job adressing the concerns of the broader development community. It seems like they spend too much time addressing things that aren't concerns and not enough time on things that are.

</comment></comment></comment></comment></comment><comment><USER8> _> Smalltalk has the cleanest, purest implementation of object-oriented concepts; not even Java, Ruby, nor CLOS can lay claim to that._

I'll take "powerful" versus "cleanest and purest" any day, thank you very much. Sorry but i'm staying with CLOS whenever i want to do object-oriented programming without feeling limited.

The author is on a pro-Smalltalk crusade (which I find just fine, Smalltalk is a great lang, and in a perfect world, it would be as popular as Javascript is today), but does so at the expense of constantly deriding Clojure, Common Lisp and Racket, which I find silly.

<comment><USER9> i would take "large ecosystem" over "powerful" or "cleanest and purest"

whenever i am in the process of picking a language for a project, i check if there is a library for what i want to do

<comment><USER8> Yes but on the other hand Smalltalk is an established language with a long history, i wouldn't be surprised if you are able to find all the libraries you need.

</comment></comment></comment><comment><USER10> I like Pharo. I was able to build a widget that scraped the front page of HN in an afternoon with it just by following the built-in tutorial and googling.

One interesting "killer app" might be the Moose platform [0]. It's basically an interactive environment for the analysis of software. Writing a parser is rather straight-forward and turning the AST into a visualization is also quite easy. This sort of feels like how I imagine a good IDE should be.

[0] [http://www.moosetechnology.org/](http://www.moosetechnology.org/)

 _update_ spelling.

<comment><USER11> can confirm. My day job is coding in Clojure, which I love, but if I get a spare Sunday afternoon I'll do some coding in Pharo, playing with Roassal

</comment></comment><comment><USER12> There's a Mooc starting in december by the INRIA ( _French Institute for Research in Computer Science and Automation_ )

[https://www.fun- mooc.fr/courses/course-v1:inria+41010+sessio...](https://www.fun- mooc.fr/courses/course-v1:inria+41010+session02/about)

<comment><USER13> Oddly, I'm more fascinated that I'll be able to learn French reading through the materials of that course. Perhaps Smalltalk will follow on the side :)

<comment><USER14> You're probably joking, but fwiw I'm 7 weeks into Duolingo's French lessons right now and found most of this course page to be easily readable without reference to the English. It's much easier than Le Petit Prince, a children's book for which I still need to hit the dictionary a lot.

<comment><USER13> No, not joking. I have some French courses under my belt from my childhood, but I never got very fluent with it because I never had any use for it. Having an actual need to use the language would be great.

<comment><USER14> Great! I'd be tempted too if I hadn't done enough Smalltalk to feel comfy already. (I'll have to find other stuff in French. Maybe Laplace on probability? Or more likely Tin-tin...)

</comment></comment></comment></comment></comment><comment><USER15> They need to work on the presentation. How do you get started ? How does the code look like ? etc. Not just "download this program and buy this book"

<comment><USER16> FWIW the PDF of the book "Pharo By Example" is available for free. It has also been revised for version 5 - I tried using edition 1 with Pharo 4 and kept having to look up the new names for things, to the point where it was frustrating to try and follow. They appear to have put a lot of work into updating the guide.

<comment><USER17> And here it is!

[http://files.pharo.org/books-pdfs/updated-pharo-by- example/2...](http://files.pharo.org/books-pdfs/updated-pharo-by- example/2017-01-14-UpdatedPharoByExample.pdf)

</comment></comment></comment><comment><USER18> My beef with Smalltalk is that it's far too much a world onto itself for my taste. Java is already a bad enough citizen of Unix but Smalltalk takes it to a new level. If Lisp and Scheme can integrate well into Unix, why can't Smalltalk?

<comment><USER19> Coming from a place of ignorance, how does Smalltalk not integrate?

<comment><USER20> A Smalltalk environment is practically its own operating system, complete with its own isolated UI/window manager, shells and desktop environment.

<comment><USER21> I'm not really sure what you are claiming here. My experiences with Smalltalk ended 20 years ago with IBM Smalltalk and Digitalk Smalltalk/V. At that time, they both used the host operating system (Windows or OS/2) for UI widgets, windows, and such, and any applications you built in it could be packaged up to be launched as any other application. One could use such an application and have no particular sense of isolation beyond an application written in a more mainstream language (like C or C++). Have modern Smalltalks regressed in this regard?

<comment><USER20> Take a look at the Pharo intro on youtube, you'll see what I mean:

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

The images on the current website look very similar, so I don't it's changed much in this regard. This has been my typical experience with Smalltalk languages, with the exception of GNU Smalltalk whose specific goal is to integrate with POSIX instead of creating a walled garden.

<comment><USER21> Do you want to perhaps point to a specific time in that video, and compare it to a non-Smalltalk environment in a way that makes this purported isolation apparent, because I don't see what you mean.

I don't recognize whatever operating system the demo was done on, so if the Pharo system is not using native widgets I would not know, you'll have to explicitly state if this is the case.

<comment><USER22> The presenter is in the host operating system (Mac OSX) until the Pharo image is "up and running" at the 0:40 mark. Everything until the presenter opens up debian at 5:00 is custom Pharo based desktop / window management / even the mouse cursor if you look closely.

<comment><USER21> Then this just means that Pharo is one of the Smalltalks that does its own window management. I think Squeak might be the same. It is not a general characteristic of Smalltalks though, and certainly is not part of their essential nature. As I said, IBM Smalltalk used native widgets and windows, and had good interaction with the rest of the operating system.

I don't think you can draw a general conclusion about Smalltalk from a specific example, especially like this one.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER23> My personal experience has been that the live coding aspect makes a huge difference to my development speed. A while ago I was going through Project Euler in less-mainstream languages, just as a warm-up/distraction from work. I would do one problem at a time and then go back to work. One day I switched from Object Pascal (with Lazarus) to Pharo. I completed the problem (which I hadn't attempted before, so no prior knowledge) so quickly, that I proceeded to complete five problems in the time it usually took me to do one. Because everything was so immediate, it was really easy to maintain a flow state. I had to force myself to stop and get back to work.

The object inspector is really nice, also being able to redefine methods in the debugger and continue the current computation is super cool. Beats poring over Java stack traces.

It would be nice if there were more open source libraries available, but SmalltalkHub is getting better: [http://smalltalkhub.com/list](http://smalltalkhub.com/list)

</comment><comment><USER24> I start from stupid since I was 8 on Programming Languages. I taught myself Assembly and Pascal before I was a teenager.

I learned Racket and Smalltalk to be a better problem solver. I ended up becoming a MUCH better programmer due to these two. Racket stuck and I use it for all my personal projects but Pharo is a great learning tool at the very least.

<comment><USER25> After starting out in Python, I did exactly the same thing with Racket and Smalltalk, which substantially improved my programming ability. I'm glad to know that I'm not the only crazy person here. :) I haven't used Pharo recently, but when using other languages (especially dynamic ones) I really miss it!

</comment></comment><comment><USER26> I enjoyed playing around with Pharo a few years back, and often look at what else the people working on it have been thinking of lately.

Having said that, the PharoJS website mentioned in the article could use some love, I just get an unstyled webpage[0]. Now, I love avoiding website bloat as much as the next guy, but from the point of view of a web developer who might be interested in exploring what Pharo and Smalltalk in general might have to offer, that seems a bit too minimal.

Amber, by comparison, runs a full SmallTalk on the website itself, which is pretty cool[1]. Doesn't seem to have maintained momentum beyond 2014 though.

[0] [https://pharojs.github.io/](https://pharojs.github.io/)

[1] [http://www.amber-lang.net/index.html](http://www.amber- lang.net/index.html)

<comment><USER27> FYI for anyone reading / interested: Amber is apparently still under active development, but they moved from Github to a self hosted platform [1]. Last code update was 3 days ago.

[1] [https://lolg.it/amber/amber](https://lolg.it/amber/amber)

<comment><USER26> Oh, that's good! But the website and documentation is pretty outdated then. I guess all current development goes into code?

</comment></comment></comment><comment><USER28> I wouldn't take Capers Jones' estimates of SLOC/function point as evidence of anything. In most cases (including these two) this seems to be Jones taking a look at the language Wikipedia page and guessing a number.

<comment><AUTHOR> Capers Jones is a well-respected expert in software metrics. He's done some ground-breaking work in this area. Unless you're an expert too, I wouldn't denigrate him.

</comment></comment><comment><USER29> _Smalltalk's use of live coding is easy and elegant; not even Common Lisp, Forth, nor Java (hot swapping) can lay claim to that._

Does anyone understand what this is talking about? I may not understand exactly what is meant by "live coding", but I think I do it in Common Lisp (via SLIME) all the time. How is it better in Smalltalk?

<comment><USER30> In Smalltalk, you can pause your application and inspect the objects alive in a stack at the time you paused it, go backwards and forwards in the stack, change them to see an alternative future, make changes and resume. It is the weirdest shit.

<comment><USER17> And because it's been around for decades, people figure out how create something like that functionality for other languages:

JavaScript Time-Travel Debugger

[https://www.microsoft.com/en- us/research/project/javascript-...](https://www.microsoft.com/en- us/research/project/javascript-time-travel-debugger/)

[https://channel9.msdn.com/blogs/Marron/Time-Travel- Debugging...](https://channel9.msdn.com/blogs/Marron/Time-Travel-Debugging- for-JavaScriptHTML)

</comment></comment></comment><comment><USER31> For those wondering what it's like to program in Pharo or why there aren't a lot of code snippets floating around in Pharo materials: it's because the way you program in Pharo somewhat different than most languages. Pharo is an IDE in the true sense, i.e. while it's technically possible to open up a workspace (text editor) window and write a new class all on one screen this is not how things are done in practice.

Programming in Pharo is usually done either in the class browser or the debugger so that you're only ever seeing the code for one method (called a message in Pharo) at a time. Pharo and other Smalltalk variants tout simplicity of syntax but leave off the fairly complicated class hierarchy and message coupling semantics ergo the necessity for an extremely powerful browser. In the browser, messages for each class are further separated into 'protocols' such as methods for 'accessing' or 'initialization' (these are not part of the Smalltalk syntax, just a convenient layer of organization). At each level in the hierarchy, the Pharo code browser gives you a nice template to edit when you want to make a new package, class, or message. The overall effect is that you're only ever working with a handful of lines at a time and, indeed, Pharo will warn you if it thinks your message is too complex. Doing things this way actually makes everything quite manageable. One of the nice features of being pure OO is that everything is a pure black box so you just need to know that a class exists and take a peek at its interface to use it effectively.

To that end, Pharo actually has an excellent search tool that's not present in other Smalltalk variants like Squeak or Cuis. It does some kind of intelligent voodoo and can find anything from definitions to instantiated objects to senders and receivers of a certain message and so on. You can also open up a playground window to experiment with whatever code in the REPL style. But it's actually a little bit more robust than a traditional REPL because of the pure OO nature of Smalltalk. The thing you get back from evaluation isn't just some text. It's an object with all the associated possibility of reflection and manipulation (which can all be done from a UI, not just from evaluating more code).

One of the things Pharo does better than almost every other language is debugger integration. Pharo is like LISP in the sense that you can start an application, have it encounter an error (or just pause execution at will), drop into the debugger and change some stuff, reify whichever execution stack frame, then resume the program as if nothing ever happened. This is the essence of the other common Pharo workflow: write some partial code and then fill it in incrementally in the debugger until you have a fully functional and bug-free application. In addition, Pharo has its own robust unit testing system called Sunit that, coupled with the debugger workflow, creates a fantastically ergonomic TDD experience.

No matter where you are in the Pharo environment, Smalltalk code gets full treatment (E.G. syntax highlighting, code completion). So what does the syntax look like? Well, it actually has that concatenative elegance of Forth plus a few other constructs. Pretty much everything is a message send. Message sends come in three flavors: unary, binary, and keyword. Constructs like conditionals are also just message sends. In addition, there are first-class lambdas (called blocks in Smalltalk). Here's the canonical factorial program:

"Factorial function" fac := [ :n | (n = 0) ifTrue: 1 ifFalse: [ n * (fac value: (n - 1)) ] ].

where " ... " is a comment, ':=' is assignment, '[ ... ]' is a block, ':n' is the block's argument, arithmetic operators are actually binary message sends, things like 'ifTrue:' are keyword message sends (unary message sends are similar but don't have colons or parameters e.g. 'SomeObject new.'), and the statement is terminated with a period. Apparent recursion is fine because Smalltalk uses late binding. Aside from some syntax for strings and class declaration, that's basically it.

Pharo also has a lot of other nice features such as keeping a log of code changes in case of program crash or power outage, an integrated package manager/version control system, and optional git integration. It's all pretty easy to use and overall the system is quite impressive with a high degree of polish and decent performance (comes close to or exceeds node in my experience). However, as others have stated, it's a walled garden. All UI interaction happens within the Pharo environment with no option for native. If you want to break out on UNIX, you have write some kind of server and use sockets or the filesystem (which isn't a huge handicap in the grand scheme of things). On the other hand, application deployment is a little iffy. There's no readily apparent scheme to pare an image down to just what your project uses and then distribute that; users would have to install your package from within their own Pharo environment.

<comment><USER30> >This is the essence of the other common Pharo workflow: write some partial code and then fill it in incrementally in the debugger until you have a fully functional and bug-free application.

This way of developing, called by some as "Living in the Debugger", is strangely not promoted all that much by the Pharo community as far as I can see. It is quite astounding for productivity. In essence, you write some very high level code in a space, "do it", and Pharo will prompt you all the way for what it needs to make that high level code work. So you end up with code you need and no more. I have changed my whole thinking about writing software according to this pattern, even when writing in other languages (Guile, Erlang, Ada, Lua...). My Pharo remains my favourite.

</comment></comment><comment><USER32> If you want to get into Pharo, there's a MOOC by France Université Numérique starting October 16th:

[http://files.pharo.org/mooc/](http://files.pharo.org/mooc/)

<comment><AUTHOR> You gave the wrong URL. See [https://www.fun- mooc.fr/courses/course-v1:inria+41010+sessio...](https://www.fun- mooc.fr/courses/course-v1:inria+41010+session02/about)

<comment><USER32> "Wrong"? That URL is linked from the page I posted. Click on "France Université Numérique".

</comment></comment></comment><comment><USER33> Okay, so lot's of praise for a language. But I have three questions that aren't answered by the article:

1.) How fast are programs written in Pharao?

2.) Is it possible to write complete and halfway modern looking desktop end- consumer GUI applications in Pharao?

3.) How good is it at parallel programming (i.e. multicore support, not just concurrency with green threads)?

I'm always interested in learning a new language, if not just for fun. Currently my new language on the Todo list is Nim. However, I do not want to take a look at a language for which the answer to all of the above questions is "Meh".

<comment><USER34> 1) Last time I tried it was reasonably fast for a dynamic language - <USER2> slower than javascript (V8) but faster than python (cpython) to give you a ballpark

2) Yes, but ou will not use native widgets. The way you write applications is: you write code by modifying the behaviour of objects in the Pharo application (which is your editor, debugger, GUI, version control system and so on), then you strip off the parts you don't need (such as what you used to write the application in the first place). Hence you will probably use the default Pharo widget system (take a look at some Pharo screenshots to get an idea)

3) Last time I checked it was planned, but there was nothing yet

<comment><USER33> My current main language for my own projects is Racket, but there are performance issues with text% and the support for parallelism is not good enough. So I guess with this respect Pharao will not be a good alternative for me either.

However, I've looked at screenshots and the default widget system seems fairly reasonable. So I'll check it out anyway.

Thanks a lot for the replies, they were helpful!

</comment></comment></comment><comment><USER35> How do you get started with GUI programming? I can't seem to find anything on this for Pharo6...and barely anything for earlier versions (which I'm assuming are now obsolete).

<comment><USER27> Spec [1] is one way. You can also find a list of books on the Pharo website [2].

[1] [http://files.pharo.org/books/spec- tutorial/](http://files.pharo.org/books/spec-tutorial/) [2] [http://books.pharo.org](http://books.pharo.org)

</comment></comment><comment><USER36> To an inexperienced eye, Smalltalk's syntax seems to be suffering from colon "cancer". (I don't get a similar feeling from Lisp, for some reason.)

</comment><comment><USER37> *ACM, want to see how bad things are, read this thread....

To understand Smalltalk in general one neeeds to understand the impetus; and behind it is Alan Kay. What we do today isn't really "computing" as envisioned and then created in the 70s. Lots of those terms used back then are used now, but the meaning has been transformed into something entirely different.

It's unfortunate that most of the things we call "state of the art" are bastardized and horrible versions of those from the 60s and 70s. Yet here we are in 2017 and we can't have the majority of "computer users" create an essay defending his/her views on climate change with an actual editable running model upon which a civil discussion could be based on. But hey, we will have an iPhone X, so who cares?

Smalltalk is like a gem, a remnant from a magical world that existed and went away - but still possible - if we just took a look way, way back as to where it all originated.

For the CS students out there, get your money's worth and start asking where all this stuff we have now came from and more importantly, why.

Here's a good start:

A Personal Computer for Children of All Ages: [https://www.mprove.de/diplom/gui/kay72.html](https://www.mprove.de/diplom/gui/kay72.html) "The basic idea is to exploit the duality between functions and tables (or processes and memory). English has nouns which refer to "objects", and verbs which refer to "actors" and "relators". This is a Newtonian epistemology. Modern physics and philosophy tend towards the idea that both "objects" and "actors" are just different aspects of the notion of process. A process has state (a set of relations having only to do with it) which changes as time (defined as interactions with other objects) passes. Using this view "data" is a process which changes "slowly", "function" is a process which changes more rapidly. Each process has the logical attributes of a complete "micro" computer: they can have inputs, give back outputs, act as a memory on file system, perform computations, be interrupted, etc. Since a "computer" can simulate all other computers (modulo time and space), having the notion of a process in a language allows useful idea such as arrays, records, recursive procedures, etc., to be added to the the repertoire at any time."

</comment><comment><USER38> Any good article describing Smalltalk features for C/Python/Go/JS developer?

</comment><comment><USER39> Is Pharo open source?

<comment><USER40> Yes. MIT license.

</comment></comment><comment><USER41> On a tangent: I wonder how everybody who writes for Medium feels about the new Quora-style nag screens.

(I can only go on tangents since I saw the nag screen and bounced.)

<comment><USER42> No nag screens with NoScript!

</comment></comment><comment><USER43> I'm sorry but the 3d image of the light house is horrible. It reminds me of POV-Ray renders from the 90s. Is Medium so poor that they can't afford a competent artist?

<comment><USER44> Medium is just a platform for posting content. The image was selected by the author.</comment></comment>


The Feds Got the Sony Hack Right, but the Way They're Framing It Is Dangerous - <AUTHOR> http://www.wired.com/2015/01/feds-got-sony-hack-right-way-theyre-framing-dangerous/

<comment><USER2> The author is looking at how the FBI's statements are playing in the U.S. private infosec community (pretty poorly so far), and calling it a bad strategy.

But why would the federal government care whether private infosec folks believe them on this? The private infosec opinion has basically no consequences for the feds. The FBI and NSA etc. will keep doing what they do regardless.

They do care what other national governments think, and those are probably the primary audience for statements like this--in particular, China, who has a lot of influence in North Korea but also wants to maintain adequately good relations with the U.S.</comment>


A developmental disorder promises a new window onto the brain's secrets - <AUTHOR> http://nautil.us/issue/32/space/the-woman-who-got-lost-at-home <comment><USER2> I once new a person who was extremely clumsy and was a terrible driver having difficulty determining appropriate actions for turning left and right when on new streets.

In retrospect, this person probably shouldn't have had a license. However, current driving tests really only cover vision, comprehension and not a more general "cognitive spatial function".

The breakdown of the different parts of the brain used for navigation makes sense.</comment>


Google Voice to take on Skype? - <AUTHOR> http://latestgeeknews.blogspot.com/2010/04/google-voice-to-take-on-skype.html

<comment><USER2> It would be certainly nice if Google did offer some sort of direct calling program, instead of connecting two landlines. I was wondering as well how long Google could offer such a service for free, does anyone know what sort of costs go into a business like this?</comment>


Marco Tempest: The electric rise and fall of Nikola Tesla   - <AUTHOR> http://www.ted.com/talks/marco_tempest_the_electric_rise_and_fall_of_nikola_tesla.html

<comment><AUTHOR> Also, if you're wondering: [http://blog.ted.com/2012/06/20/marco-tempest- makes-the-early...](http://blog.ted.com/2012/06/20/marco-tempest-makes-the- early-1900s-new-again-as-he-tells-the-story-of-nikola-tesla/)</comment>


The History of Sitting Down (1967) - <AUTHOR> http://books.google.com/books?id=rPgVp3vMOjcC&lpg=PA311&vq=fashion&pg=PA288#v=onepage&q&f=false

<comment><USER2> Seems like a cool book! There's an interesting note on page 280 about how wealthy people and their apprentices used to live in the same households, but began living separately as cities became larger and began to separate areas of working from living. Compare this with the huge migration of workers in countries like China today, where people work far away from their homes and families.

[http://books.google.com/books?id=rPgVp3vMOjcC&pg=PA280](http://books.google.com/books?id=rPgVp3vMOjcC&pg=PA280)

</comment><comment><USER3> I will check back to see. Is not squatting bad? As in chairs are a technological de-evolution?

I used to get scolded for slouching, but bullies slouch. They seek the endorphins of slouching. I sort of slouch like a plank, or maybe it is lazy & even more inert than regular sitters. I'm not sure.</comment>


New Linux kernel fixes power-saving issues - <AUTHOR> http://www.h-online.com/open/news/item/New-Linux-kernel-fixes-power-saving-issues-1429482.html

<comment><USER2> Very excited about this. My T410 has a noticeably shorter battery life when running arch compared to windows. This will help close that gap a bit.

<comment><USER3> Does it have Optimus, i.e. two graphics chips? Which chip do you use more often? I keep my T410 exclusively running on the power-hungry nVidia chip and don't get more than 2hrs of battery life.

<comment><USER2> It does have Optimus and the battery life is about where yours is - maybe 2.5 hours.

I'm running the nVidia chip exclusively, but when I get around to it, I'll probably switch, as I'm running an openbox desktop that just doesn't need that kind of graphics acceleration. I have yet to figure out a painless way of switching between the two, but that's probably because I haven't really worked on it much.

<comment><USER4> There's no current way to switch painlessly, but there is something that makes it slightly nicer than having to restart all of your programs. Check out Bumblebee [1]. It does it by running two X servers, one for the lower power system and another for the NVIDIA binary blob and plays with environment variables to get things working. Then it takes the NVIDIA server and copies the images over to the slower card. In a round about way it's what windows systems do for it, but not quite as sane and not quite as performant. There's been some work to create the sharing needed so that drivers can share the buffers directly and eventually there won't need to be the second X server. However this also depends on if that work either gets its license changed or NVIDIA GPLs the kernel bits to their driver.

[1] <https://wiki.archlinux.org/index.php/Bumblebee>

</comment></comment></comment></comment><comment><USER5> Good news. It should be noted that Ubuntu has included this fix since their distro version 3.0.0-13, and other distros may have backported the fix, too. But now it's in mainline.

</comment><comment><USER6> Nice. My X220 already has seemingly-infinite battery life, so this should be even better.

<comment><USER7> I have an X220, too, but it only has ~3 hrs battery life. Where did you buy yours?

<comment><USER6> I have two, one for work and one I bought myself from Lenovo. They both get about 8 hours battery life with the 9-cell battery.

<comment><USER8> Mine too, but it runs very hot and gets significantly less battery on Linux than Windows. (How you know something's wrong.)

I tried a fix or two as suggested, but they didn't help; I hope the kernel upgrade does it!

<comment><USER6> I don't know how mine compares to Windows, but it doesn't run particularly hot. I don't use anything fancy on my Linux boxes; xmonad and some terminals on my home machine, xmonad and GNOME on my work machine. Very low-CPU :)

</comment></comment></comment></comment></comment><comment><USER9> "The patch only has this effect on systems with the firmware problem detailed above, which can be identified by using dmesg to display kernel messages and looking for the message "ACPI FADT declares the system doesn't support PCIe ASPM, so disable it"." >> Not for all!</comment>


Shown HN: my weekend project GuysHelpMeDecide.com - <AUTHOR> http://guyshelpmedecide.com

<comment><AUTHOR> link: <http://guyshelpmedecide.com>

The idea is pretty simple: A tool that helps you get feedback from your friends on shopping decisions.

Don't know what book to read? With this tool you can set up a poll with some choices and your facebook friends will be able to comment and vote the best option.

This is my attempt to make something cool, simple and viral.

For those interested: -Uses Twitter Bootstrap as CSS Framework. -PHP for server side technology (with codeigniter MVC framework). -jQuery used heavily on frontend. -Amazon API. -Facebook Open Graph API.

I didn't build that for the money, but all the amazon links are affiliate links, so I'll get a 4% :D (Let's see if this covers the hosting at least).

Any feedback would be greatly appreciated</comment>


Torvalds: I've pulled this, but if problems, ext4 is going on my shit-list - <AUTHOR> https://lkml.org/lkml/2017/8/6/219 <comment><USER2> I'll admit the pull request was a little marginal for patches that would be landing in -rc4, which is roughly halfway through the development cycle. That being said, all of the patches got independent review (none of them were authored by me, and I reviewed them all before accepting them). I also ran the tests through a very extensive regression test suite. ([https://thunk.org/gce- xfstests](https://thunk.org/gce-xfstests)). So even though many of the commits landed very recently, in my experience testing catches many more problems than end user testing in linux-next, because not that many people run linux-next.

Granted, I certainly wouldn't have sent this pull request any later. After rc4 the only thing I would send are regression fixes, and at most one commit in this pull request could be considered a regression fixes. The last commit listed in the short log "make xattr inode reads faster" optimizes a new feature (large xattr support) that only landed in this merge window. So it's not going to have many users, and I figured it was safe.

Cleanups have always been in the grey area. I certainly wouldn't have any hesitation sending these cleanups a week or two earlier. None of them were terribly large by themselves, although as a whole it's a somewhat large merge request for at this point in the cycle:

13 files changed, 290 insertions(+), 196 deletions(-)

If I screwed up, and missed a bug in my code review, and it wasn't picked up in the testing, ultimately I'm the one that's going to be held accountable. Which presumably means that Linus isn't going to be trust me in the future when I send in another marginal pull request.

In the past, when I was ultra-conservative and wouldn't send any of these fixes until the merge window, Greg K-H would sometimes grump at me because it would delay the fixes getting to stable kernel, and it would also contribute towards making his workload more "lumpy". What I would have done after -rc4 (and perhaps what I should have done for -rc4) is to only push those fixes that were cc'ed to firstname.lastname@example.com or were specifically regression fixes.

Bottom line: I did realize that what I was sending to Linus was pushing the boundaries a bit. And Linus was making sure that I knew that.

<comment><USER3> Huge respect for both! Shows over and over again how clear communication beats political correctness every time.

<comment><USER4> It is not, however, an excuse to dismiss politically correct ways of clearly communicating.

</comment></comment></comment><comment><USER5> This seems a prime example of Linus being a pretty awesome maintainer. Blunt, but really just honest on messaging.

Or was I supposed to read this differently?

<comment><USER6> If he's not convinced he shouldn't have pulled imho. Reply like this before pulling and see what they reply

<comment><USER5> That would make sense on a new maintainer. Source of these is a well trusted dev.

I don't know, as I am an outsider, but messaging like this is as important for the crowd as it is for the directly involved.

</comment></comment></comment><comment><USER7> Every post I see on HM about Linus is about how cool it is that LT is an asshole.

What's with the skewed asshole-bias? Same people will bitch about "asshole people" on there own teams that are tough on PRs.

<comment><USER8> Linus is not an asshole and no one thinks assholes are 'cool'. This comes across as a distorted framing of the issue to fit a preconceived bias.

There are millions of lkml posts that don't get posted here, only the ones where Linus has to tick someone off or express a disagreement, usually posted with zero context or history.

If your impression of Linus is based solely on posts that make it to HN you have a lot of catching up to do.

<comment><USER7> Also plenty of people think assholes are cool, otherwise Dan Bilzerian would be a janitor.

<comment><USER8> Obviously assholes would find other assholes 'cool'. It's self defining.

</comment></comment></comment></comment><comment><USER9> Could someone please give some context on this?

<comment><USER10> Ted Ts'o (extremely well-known developer) being warned by Linus Torvalds (extremely well-known developer) about a Git pull request that has a misleading commit message.

Edit: correct spelling of Ts'o. :S

<comment><USER11> Arguably misleading. All of those commit lines except the very last look like bugfixes or cleanup to me.

I think it's a reasonable 1-sentence summary.

</comment></comment></comment><comment><USER12> It always cracks me up how Torvald's "necessary, blunt honesty" is so frequently more verbose than a neutral, not-rude answer would have been.

<comment><USER13> I don't see the s word or any cuss words as being necessary. Short and blunt is just fine.

</comment></comment><comment><USER14> BREAKING NEWS: Linus used word "shit" on email message.

Geez, srsly...

</comment><comment><USER15> This is not noteworthy.

</comment><comment><USER16> St Ignucius bless his heart</comment>


Apple, Google, and Microsoft are all solving the same problems - <AUTHOR> http://www.theverge.com/2015/9/18/9351197/apple-google-microsoft-tech-innovation-uniformity <comment><USER2> 1978: Apple, Atari, Commodore, and Tandy are all solving the same problems.

Competition is what drives technology forward. The only thing that may have changed is that hardware developments now spread faster to other companies because a lot of it is outsourced.

Software knowledge still spreads through diffusion through the movement of employees between companies, but also is sped up a bit because lots of scientific ideas are distributed through the Internet.

<comment><USER3> The difference from then and now is patents.

Gates himself admitted that if the current patent system had been in place back when MS got started, it would never have gotten off the ground.

<comment><USER4> What has changed since then?

<comment><USER3> Basically that software can be patented.

Back during the 70s-80s, a specific set of code was covered by copyright. But the behavior encoded could be reverse engineered.

A famous example is how Compaq clean room reverse engineered the BIOS of the IBM PC, thus opening up the market for the clones.

In constrast there are all kinds of issues with using FAT (FAT32/ExFAT) variants on Android phones because MS have/had patents. And i think Android early on didn't offer things like pinch to zoom because Apple held a patent (not sure what happened there).

<comment><USER5> I asked a patent lawyer in Switzerland about this, and the law is different to the US. Does that create any openings?

<comment><USER3> IANAL, but i suspect it will depend on how much you want to trade with USA...

</comment></comment></comment></comment></comment></comment><comment><USER6> I'm supposed to believe that it was only at the exact moment that the public market put Dell's stock in the shitter that Michael Dell magically got religion regarding short-term earnings pressures or other related issues? Ha!! Give me a break, Dell was public for 25 years!!! Funny it never seemed to be an issue when his stock was doing well...

</comment><comment><USER7> > All these machinations and adjustments are precisely what Michael Dell > sought to escape when he took his business private two years ago.

Got me thinking, what keeps companies like Apple and Google from doing the same? What are the benefits of staying public for them? What would be the consequence of going private? I'm just very curious now.

<comment><USER8> If they remain as successful as they are now, going private will never be an option because doing so would cause complete erosion of trust by shareholders, customers, public, and world. They will become opaque entities, and it will become very difficult for them to operate globally.

Putting that problem aside, at their current valuation, a group of investors will need to raise a huge amount of capital for relatively small return.

Dell took it private because the market effectively wrote off Dell and it wasn't trading much more above the book value. So raising capital to cover the amount was not difficult because the company was still reasonably profitable with good cash flow.

<comment><USER9> surely "erosion of trust by shareholders" isn't an issue for a wholely owned private company.

</comment></comment></comment><comment><USER10> I'd like to note that these are the problem they're _talking_ about and promoting. Who knows what they have behind the scenes that no one is covering for fear of being sued.

Prior to the unveiling of the iPhone - January 2007, iirc - there were some rumors of a phone but mostly conjecture. It blindsided almost everyone. And when it launched, it redefined phone design.

Pay attention to the PR and "leaks" all you want, but remember that their entire job is to talk about and promote the things they want you to know about..

<comment><USER11> "it redefined phone design".

A shame that the LG Prada was released a month earlier - no lawsuit ever materialized, but for a while there was back and forth threatening about Apple's "inspiration".

</comment></comment><comment><USER12> Not a serious article. Google is investing billions yearly in r&d for far reaching, very risky innovations.

As for Microsoft and Apple ,we really don't know.

Could we have predicted the iPhone in 2005 ? Do we know what kind of car Apple is working on ? Do we know about Microsoft "special projects" group which recruited someone from Darpa ?

And than finally when we do know about innovative efforts , the author dismisses them out of hand: "Google's Project Ara modular phone and Microsoft's HoloLens AR headset, by contrast, are the tech equivalent of concept cars: supremely ambitious today, but years away from hitting the market in what will likely be a tamer, less revolutionary form."

<comment><USER13> > Could we have predicted the iPhone in 2005 ?

depends on what you mean by predict. It was pretty obvious that phone/data would be added to PDAs soon. It might not have been obvious that Apple would do it so well and take PDAs from a geek/niche thing to the mainstream.

<comment><USER12> Yes ,i meant the iPhone as something Apple built.

<comment><USER14> At that time the iPod was hugely successful. Phones got more and more features very quickly: web/wap browsers, e-mail, cameras, installable games. The Motorola ROKR was the first try at combining an iPod with a phone. It failed. Back then everybody was expecting an iPodPhone in the near future.

</comment></comment></comment></comment><comment><USER15> Well there is overlap but then again, there is overlap in the functionality of a car and a truck too. I see Google as primarily solving the "problem" that they still don't have enough data on their users. I wish they didn't have to solve this problem.

As an aside, theverge has become super annoying to read with their over the top advertising. Did they start doing this recently?

[http://i.imgur.com/YFY05gY.jpg](http://i.imgur.com/YFY05gY.jpg)

</comment><comment><USER16> The problem is not just that they're all solving the same problems, but that they are mostly solving them in the same way: put everything in the cloud, 'feudalize' the device, make everything free and then monetize the user, solve security and OS-rot problems by closing the ecosystem and enforcing conformity instead of by fixing the underlying problems with the platform that give rise to this entropy and insecurity.

Read Zero to One, on competition and its downsides and the way you begin to 'clone' your competitors and nobody does anything interesting.

</comment><comment><USER17> Voice enabled UIs with some AI capability are the future, even if it is a little annoying hearing people talking to their phones or computers.

It might seem like all three companies are duplicating effort and inventing the same things, but digital assistants that help us communicate easier, access great content easier, and get stuff done easier, are where human- computer interaction is headed.

<comment><USER18> > Voice enabled UIs with some AI capability are the future

I don't know if you are using voice enabled UIs, but from someone who's using public transportation to go to work in the morning, that's not "a little annoying", that's a big no-no. Talking to your watch spooks people around you like crazy, and having to repeat 2 or 3 times (because noise, eh) your command is just uncomfortable. Worst case ever is sending texts with that (as everybody is actively listening to what you are saying).

Sure, these technologies make great marketing material, but apart from the glowing on-stage demos, the actual use case of voice control immediately dies when there's either other people or loud (and fully quiet) environments.

<comment><USER19> public transport? What kind of peasant are you?

This technology is designed for our self driving Tesla future

<comment><USER7> I see your sarcasm but Tesla shouldn't have been part of it :)

</comment></comment></comment></comment><comment><USER20> Startups solve new problems. Large companies refine and scale the most popular of those solutions.

</comment><comment><USER21> Technopolies on the road to techno-communism. We need to decentralize our systems.

<comment><USER22> Communism is supposed to be decentralized and democratic. I assume you mean the Soviet conception of communism was a traditional top-down rule from above. (It wasn't communism)

<comment><USER23> Are there any examples of democratic communism?

<comment><USER24> [https://en.wikipedia.org/wiki/Cooperative](https://en.wikipedia.org/wiki/Cooperative)

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

I don't know if this count as "communist" but they are two type of collective egalitarian democratic organisations that have got some success.

<comment><USER25> How do they scale? Workable solutions need to allow seven billion people to inter-operate.

<comment><USER26> No known system scales to seven billion people. (Just try to calculate what it would mean for every family in the world to buy a car.)

Why would you think that a political or economical system needs to be globally scalable to be useful? Or that it would even be desirable?

It would be reasonable to believe that a family, a business or a city should not be governed in the same way a country or a planet is.

<comment><USER25> It's clear that it's not necessary for a system to scale globally to be useful.

But a political system that scales globally is definitely desirable; an awful lot of human suffering is directly traceable to sub-optimal decisions made internationally because "those people" aren't "our people." There are big wins to be had for solving that problem.</comment></comment></comment></comment></comment></comment></comment>


To tip or not to tip? - <AUTHOR> http://aeon.co/magazine/culture/tipping-polite-gift-or-demeaning-hand-out/ <comment><USER2> "Tipping looks like an anachronistic hangover from a time when restaurant staff were the lowest of the low"

This is unfortunately still the case in America. I can't believe the author writes a long, elaborate article mentioning tipping in America without mentioning the minimum wage for food service in the US. Federally, it's currently $2.13/hr though employers are required to compensate employees so they make at least minimum wage ($7.25/hr currently). Waiting jobs are not minimum wage jobs, however. They require a ton of difficult work and I would venture to guess that if waiters/waitresses were only paid the typical minimum federal wage, we'd quickly see a shortage followed by a rise in wages (the current average wage in the US is $11.82) (Source: [https://en.wikipedia.org/wiki/Tipped_wage_in_the_United_Stat...](https://en.wikipedia.org/wiki/Tipped_wage_in_the_United_States)).

At least in the US, this is not up for debate until we change the law. Until the 'to tip' is the _only_ answer anyone who wants otherwise, no matter how good their intentions, is just greedy. The discussion, at least in the US, should be framed in terms of legal issues, not customary or other issues.

I think we would do best to change our stupid laws, pay waiters and waitresses a lot more, and be done with tipping. It really is un-American. But then again, sadly, so is paying someone a decent wage.

<comment><USER3> One of the hidden complexities of food service is that tipping often serves as a tax dodge. Servers often wind up taking home a fair amount of cash but reporting poverty-grade incomes.

I knew one lady who got a Section 8 voucher this way. She definitely did not qualify on what she regularly took home.

<comment><USER4> I've known bartenders who had issues related to this. Not from the IRS. They rarely seem to bother with service employees who report a "reasonable" percentage of their sales as tips.

The issues were with lenders, when the bartenders wanted to buy houses. They had enough income to easily afford the mortgage, but no records that indicated that. In the end, they dealt with a local lender that understood the situation, but it was definitely a hassle.

</comment></comment></comment><comment><USER5> I'm from Australia (no tipping) and have been living in North America for 9 years (always tipping) so this issue is close to my heart.

I've come to see tipping as a form of slavery, the only twist being it's paid - albeit very lowly.

It's a way for people with money to say "Hey peasant: _If_ you do what I want, and _if_ I'm happy about it, and _if_ I feel like it, I _might_ give you a little of _my_ money. Or not".

Sort of like a work contract where the employer has ultimate power and absolutely no rules to govern if they even have to pay their employees at all. Of course, there are labor laws against that sort of thing in developed countries, so tipping is just a way to circumvent those labor laws.

It would be much better if those people were simply paid what they should be paid by their employer in the first place, and the terms of that were bound by labor laws.

I personally feel dirty every time I tip - it almost feels like being at a strip bar or something similar.

(To be clear, I always tip, because the people in those jobs rely on it. It's not their fault I don't like the system.)

<comment><USER6> Do you _actually talk_ to service staff about this? Do they tell you they feel enslaved and demeaned by large tips? I have had this conversation repeatedly, and not one server has ever told me they felt bad about tips.

<comment><USER7> I don't think the parent poster mentioned anything about large tips. I myself read complaints about poor tips constantly in my Facebook feed, usually from the same disgruntled couple of service industry friends of mine. But then again, I don't think I have that many more friends in the service industry.

As far as I can see, tipping is not adds frustrating unpredictability to their income, but it also exposes them to discrimination.

As a customer, I find it annoying because it makes paying for my meal a math problem, particularly when dining in a group.

I see nothing wrong with a true gratuity for stellar service, but when it's just an unwritten (or written) extra cost, it's absurd. Just charge me what it costs to pay your service people.

<comment><USER4> If you left their income solely up to their employers, it would be more predictable. But it would also almost certainly be considerably lower.

<comment><USER8> > But it would also almost certainly be considerably lower.

No, it wouldn't. It would be exactly the same. Because their employer knows _exactly_ how much they will get in tips and subtracted that same amount from their salary. The cost of labor is constant, regardless of how you divide it.

<comment><USER4> Frankly, you're just flat out wrong on this. If the employer can capture this income, they will. You're welcome to present evidence otherwise.

<comment><USER8> If the employer captures too much income, the employee quits. That's what controls the amount the employer can capture and that's the labor wage for the work. This is econ 101.

<comment><USER6> Doesn't econ 101 have something to say about Pareto Efficiency, or is that a later course?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> This article from the chef at the Linkery (mentioned in TFA) is required reading on the subject.

I think the fact that there is good evidence that tipping is often racist and sexist is perhaps the strongest argument against it.

Part 1: [http://jayporter.com/dispatches/observations-from-a- tipless-...](http://jayporter.com/dispatches/observations-from-a-tipless- restaurant-part-1-overview/)

Part 2: [http://jayporter.com/dispatches/observations-from-a- tipless-...](http://jayporter.com/dispatches/observations-from-a-tipless- restaurant-part-2-money-and-the-law/)

Part 3: [http://jayporter.com/dispatches/observations-from-a- tipless-...](http://jayporter.com/dispatches/observations-from-a-tipless- restaurant-part-3/)

Part 4: [http://jayporter.com/dispatches/observations-from-a- tipless-...](http://jayporter.com/dispatches/observations-from-a-tipless- restaurant-part-4/)

Part 5: [http://jayporter.com/dispatches/observations-from-a- tipless-...](http://jayporter.com/dispatches/observations-from-a-tipless- restaurant-part-5-sex-power-tips/)

Part 6: [http://jayporter.com/dispatches/observations-from-a- tipless-...](http://jayporter.com/dispatches/observations-from-a-tipless- restaurant-part-6-why-tipping-should-and-may-be-made-illegal/)

</comment><comment><USER10> This is a good article, and it goes into detail in the origins of tipping and why different countries tip differently that I hadn't seen before. But it only covers the restaurant industry. What about all the other jobs where tipping is expected? How about jobs where we're unsure whether to tip?

For example, since this is Hacker News, how about all the service industry startups, such as the transportation companies Uber and Lyft, or Postmates, or Instacart, or the many others that have sprung up? Of all of these, Uber is the only one I can think of that explicitly doesn't provide a means to tip. Most of these companies do offer a way to tip (although they generally leave the default at $0). When I use one of these companies, occasionally I ask the driver / delivery person / whoever what the expectation is, and usually the answer is something along the lines of the tip is completely optional and is provided because some people explicitly want to tip. But this answer is very unsatisfying, since I don't know if they're being truthful or if they've been instructed to tell people it's optional. Ultimately, I'm always left with a little bit of anxiety about whether I really should be tipping, and if so, how much is appropriate.

</comment><comment><USER11> I ate at a restaurant in Berkeley a few weeks ago that doesn't accept tips, but instead automatically adds a 20% gratuity to your bill. This is a good first step, but I wish they would go one further and increase the price of menu items by 20%, rather than separating the prices.

<comment><USER12> I like seeing the service included in the bill, it makes it explicit that it's a separate thing from the dinner and something that I'm paying for.

<comment><USER13> So how about separate charges for cleaning and accounting?

The restaurant pays for a lot of other things too that are not directly part of the dinner. I don't understand why service should be considered special.

<comment><USER4> Because the service is a direct and prominent factor in your experience of the meal.

<comment><USER14> So are the ingredients, the recipe, and the individual elements of the cooking. I also personally rate restaurants on the comfort and style of the furnishing, the "ambience", the location, and events, if any (a Lebanese restaurant I like occasionally has a belly dancer).

None of these are separately itemized on my bill, nor would I expect them to be.

</comment></comment></comment></comment></comment><comment><USER15> From what I've seen, almost all restaurants where servers are tipped also pay those servers something low like $3/hr. I don't like tipping, but I don't like shorting them the money they're counting on to survive.

<comment><USER16> >From what I've seen, almost all restaurants where servers are tipped also pay those servers something low like $3/hr.

This isn't true for every state.

[http://en.wikipedia.org/wiki/Tipped_wage_in_the_United_State...](http://en.wikipedia.org/wiki/Tipped_wage_in_the_United_States)

</comment></comment><comment><USER17> As someone who's both received and given tips, I love them. Why? Because they're a dead-simple way to convert money to happiness. When I received a big tip, it always brightened my shift a bit. And now, every time I go out to eat, I know that I can do the same for someone else.

<comment><USER18> Do you stand in the street and give people money? You can buy other's temporary happiness there too.

<comment><USER19> I like tipping high on servers and bartenders who have been exceptionally nice to me.

If someone is just friendly and helpful way beyond the call of duty, I'll probably drop a 25% tip in their lap just because if somebody makes my day, I want to make their day in return.

And then there was when my favorite bartender left his job at my favorite bar... I think I tipped almost 50% on his last night as a parting gift.

</comment></comment></comment><comment><USER20> I typically tip quite generously (20-25%), but I hate the idea of tipping. I'd much prefer it was just included in the bill.

What bugs me the most is that it makes me stop and think about what to tip, which is why I always tip around the same amount.

I also don't always know when to tip. For example, I have a house cleaner coming this weekend. Is it customary to tip a house cleaner?

</comment><comment><USER21> To tip!

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

<comment><USER22> Reservoir Dogs was what popped into my head when I saw the title.

[https://www.youtube.com/watch?v=Z-qV9wVGb38](https://www.youtube.com/watch?v=Z-qV9wVGb38)

</comment></comment><comment><USER23> I have no problem with a society that tips regularly and normally. My problem is what happens when you don't tip.

</comment><comment><USER24> Tipping should go away, since it is a classist holdover tradition, but not until wages in tipping countries increase significantly, and that depends on overall economic health and structures.

I think people consider not tipping mostly because of depressed economic conditions or situations and then they rationalize it.

</comment><comment><USER25> I waited tables for a while at a range of restaurants from very nice steakhouses to exceptionally-high-profile clubs. I'm open to questions about my experiences with tipping, horror stories, weird guests, and my genuine thoughts on the matter.

<comment><USER26> If you have a repeat customer that is nice, but doesn't tip (or tips very poorly, like say 5%) does the staff treat him with less quality?

<comment><USER25> These do exist, and they always receive warm welcomes. They're considered like family.</comment></comment></comment>


100% of US Warming Is Due to NOAA Data Tampering - <AUTHOR> http://realclimatescience.com/2016/12/100-of-us-warming-is-due-to-noaa-data-tampering/ <comment><USER2> Damnit NOAA, stay out of my house! This summer was unbelievably hot; it's unforgivable to find out that it was all due to NOAA!

</comment><comment><USER3> Was this deleted (or heavily down-weighted) for disagreeing with some admin's politics?

I'm pretty sure when I saw this it was on the front page, now it's totally disappeared, except from the "New" tab.

[All these downvotes, but no reply. Am I wrong about this? If so, say so.]

<comment><USER4> You are probably getting down votes for insinuating a conspiracy that the admins/moderators are doing this. If it was deleted you'd see [dead] next to the title. I would assume a more benign reason: other HN readers are flagging it.

<comment><USER5> [dead] doesn't indicate admin action either, at least not directly. It happens when either (a) a lot of users flagged the submission; (b) the site is banned; (c) the submitter is banned.

<comment><USER4> Thanks for the clarification and info Dan.

</comment></comment></comment></comment><comment><USER6> Lols.

<comment><USER7> Why are you laughing? This site gets displayed on the Drudge Report several times a month. In fact, I just checked and this story is there now in the left column:

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

Millions of people read the site monthly.

<comment><USER6> I'm not sure why that matters; can you explain?

<comment><USER4> Assuming you are laughing at this article because you think it's bogus, I believe melling is asking why you are laughing if millions of people are being exposed to misleading information. That's not what most would consider a laughing matter.

<comment><USER6> Ah. Ultimately, unfortunately, to me it ultimately is. Not the "Haha that's hilarious, he slipped on a banana!" kind, of course.

But the pathetic lack of scientific education/knowledge in the general US population _is_ laughable.</comment></comment></comment></comment></comment>


Facebook acknowledges it shares info with Instagram, Messenger, and WhatsApp - <AUTHOR> https://www.cnbc.com/2018/04/04/facebook-updates-its-terms-of-service-to-include-messenger-instagram.html <comment><USER2> Good to know for a fact, but did anyone actually think otherwise?</comment>