Git is Not a New Subversion - <AUTHOR> http://www.git-tower.com/blog/git-is-not-a-new-subversion/ <comment><USER2> > _Using branches heavily in your development can make you a better programmer > like few other habits can._

It was really hard to keep reading after this line. It's like saying painting your bedroom red will make you better at sex. It's like saying getting a gas- powered golf cart will make you better at golf. It's like saying changing your mouse to be inverted on the Y-axis will make you better at computer games. All of these things change the experience, but they don't make you inherently better at anything. Just like branching during development.

<comment><USER3> I find it plausible that a golf cart could make somebody better at golf. Without the cart, a non-trivial amount of exertion is spent on a tangentially related task (getting from hole to hole) instead of on the primary task (getting the ball from hole to hole). Something that allows golfers to better focus on golfing could conceivably improve their game.

<comment><USER4> ok then: "A paintbrush in hand doesn't make you Monet"

<comment><USER5> "Using paintbrushes heavily in your painting can make you a better painter like few other habits can."

Still seems to work.

</comment></comment></comment></comment><comment><USER6> The other really powerful thing with git is the ability to keep a long running branch and continually rebase with something like develop/master. That way you can resolve conflicts outside of the main line and then reduce the chances of a hairy merge.

I've found this to be very useful with large refactorings. It eases the pressure of having to stabilize everything before a release. If the refactoring isn't ready for this release, don't merge it back in.

<comment><AUTHOR> Absolutely agree! Rebase is a great alternative to standard merges: it keeps your line of development clean and avoids having tons of "merge knots" in your commit graph.

</comment></comment><comment><USER7> Well, this is Tower's blog, but stating that Git was "the first system that was deliberately built around" branching is too arrogant.

Nevertheless, branches are really just a (albeit nice) side-effect of the fact that Git (and Mercurial, for that matter) explicitly tracks _changesets_, not just _revisions_.

<comment><USER8> > stating that Git was "the first system that was deliberately built around" > branching is too arrogant.

Do you have a counter-example?

<comment><USER7> For one, Mercurial has branching as well. Although technically it was released 12 days later than Git, the motivation for both of them was that Linus Torvalds decided (for legal reasons) not to use BitKeeper for Linux kernel development and was in need for a replacement version control system.

Besides Git, Mercurial and BitKeeper, there is also Monotone, which is also a DVCS.

<comment><USER9> and Darcs. Which is more "patch based". Never used it much, but it has been around for quite a while (march 2003).

arch/tla/ArX was also an early one (2001? 2003?). I recall it was distributed and had branching.

</comment></comment></comment></comment><comment><USER10> This misses the biggest thing that made me initially switch to git: local commits.

I can do with only a single branch if necessary, but how the f*ck are you supposed to develop anything locally and roll back changes in subversion if you are never allowed to commit because it might break someone else's stuff?

I think there are other svn-alikes that might solve this problem (svk?), but with pure subversion it is the biggest roadblock for me (and I bet, a lot of other new coders).

<comment><USER11> It's something you can do in svn already. Granted, it's not as streamlined as it is in git, and you would need to commit to the remote server, but that's not the end of the world.

In the old days, before git existed, we used to have a space in the repo for each developer. You could put whatever you wanted in there. So if you wanted to go off on a tangent you just copied the code via svn, switched to that copy, do your work, commit as you please. When you were happy you could cherrypick / merge into the main branches of the code.

Git makes this stuff easier, but it was all possible with svn. Hell, it was probably even possible with cvs if you jumped through the right hoops.

<comment><USER10> Firstly -- it's on the server, as you said, which slows things down. Also, is there an easy way to rollback, if you don't have certain privileges on the server?

<comment><USER11> True, but it's a trade off. I've run big svn repos before where we couldn't have used git because it would have taken up too much space on the client machines.

In terms of editing the history it's generally just considered something that you don't need to do.

My point was not so much that git isn't better. It was more that the desire for the new tech makes people forget what the old tech could do. It happened when svn took over from cvs. It'll happen when the next tech comes along to replace it. That's life.

</comment></comment></comment></comment><comment><USER12> This is nothing that anyone here doesn't already know and agree with. This is pure blog spam to drive traffic to your application

<comment><USER13> Amazing! Maybe I could see your blog post where you harnessed the collective mind of all HackerNews users and became aware of what everyone knows?

</comment></comment><comment><USER14> It's useful to follow a proper branching model.

Where I work we use master as the release-production-ready code. We branch of version branches from there. So a 2.5 release will be based off of master.

We work off of develop, and branch out topical branches from there, once complete merge to develop, test, once approved merge develop towards master.

And so on and so forth. It's very clean and makes it easy to test out other developer's feature as everything is encapsulated in a branch.

<comment><AUTHOR> Same approach here in our team! Basically a very similar model to what "git- flow" propagates. And actually one that is very easy to understand.

<comment><USER15> And same here. The general git-flow workflow has worked extremely well for us and has cut down on almost all version control issues we previously had.

</comment></comment></comment><comment><USER16> What would be nice is some kind of simple Git that consolidates some of the multiple command sets that I have to use to do things that are just one command with SVN.

Also I miss the deterministic nature of SVN Revert, when I run that in SVN it really makes my working directory exactly as it was that morning before I started typing. With Git, well with EGit this isn't too hard, Team | Reset | Hard | References | ORIG_HEAD. It works for me.

</comment><comment><USER17> I don't trust git stash and prefer to instead commit, leaving some message like "This is the first commit of branch foo", then rebase when I'm done. That way I don't have to worry about forgetting that I stashed changes earlier, or not being able to find the stash that I thought I did. The branch always has the latest code and i'll just rebase when it's ready.

</comment><comment><USER18> This looks very interesting. I've been reviewing a number of the Git clients (SmartGit, SourceTree, etc.) It appears that this client integrates features and context that help one use Git. But I am not clear on how it improves on Git itself. What are the strengths of Tower beyond those features that are provided through SmartGit?

<comment><AUTHOR> First, let me say that SmartGit is an excellent application, too. However, most people that chose Tower over SmartGit prefer our approach in regard to user interface, workflows, usability, etc. Tower goes a long way to make using Git both as easy and as comfortable as possible.

However, don't believe me ;-) I recommend you download the free trial from our website and see for yourself.

</comment></comment><comment><USER19> I'm still interested in something which tracks "moves" well. Moving a big block of text/code into a different file is still lacks the easy-to-see guarantee that the disappearing and appearing two blocks are the same. Do you know any techniques for this?

<comment><USER20> Moving a block of code within a file is just a delete+insert as well. I don't think git differentiates between moving something within a file and moving it between files the way other systems do, but as far as I know there aren't any systems that actually understand and track refactorings rather than tracking diffs.

</comment></comment><comment><USER21> I used to think that branching was awesome. And then I realized that what was REALLY awesome were small, atomic commits. They are the thins that make code increments readable and let you find the problems better.

Branches are good for isolating longer-running changes but the merges are often not small. The longer the branch the more chance the merge will introduce subtle bugs. And the merge has so many lines change, where do you begin to see where the bug is once you've combined branch A and B?

I've had a coworker argue that NOT having long lived branches avoids this. And he said at Microsoft they were just fine with mainline - and as soon as they started branching the trouble always started during the merge.

So what about that?

<comment><AUTHOR> I guess it's a combination: a) Granular commits are an essential basis of good version control. Big, bloated commits (maybe even combining code from multiple, different topics) will sooner or later bite you. b) Integrating often. I think you can be successful with long-lived branches, but you need to have more discipline and not forget to re-integrate from time to time. Integrating late will naturally raise the risk of conflicts - because, simply, more changes accumulate.

<comment><USER21> Why have long lived branches at all?

<comment><AUTHOR> A lot of teams have, for example, a "development" branch next to "master" through the whole project - and are doing fine.

It's a matter of taste and agreement within the team, I'd say.

</comment></comment></comment></comment><comment><USER22> When I read that title, I thought this is "GIT is not a failure like SVN". Oops.

</comment><comment><USER23> So, here's a story.

My first attempt at "revision control" was multiple copies of files: "main.cpp", "main_2.cpp", "main_2final.cpp", "main_2finalb.cpp", "main_2finalb_forreal.cpp", and so on.

This scheme clearly doesn't work.

So, in highschool, we started using SVN. We used it less for its versioning abilities than we did for its ability to function like a distributed file share (this was before Dropbox, which sucks rocks anyways). We stored lots of binary files in it (images, models, etc.), and sadness resulted, but it beat the hell out of the alternative.

In college, my SVN-foo upgraded--we used SVN properly: updating, resolving conflicts, and committing changes. It worked well enough, though it still sucked for binary stuff--and merging conflicts was a pain in the neck.

After college, we started using SVN more cleverly. We started limiting our commits to functional changes, and documenting very carefully what changed and why. We tagged branches for release, and kept the repo clean. We moved binaries off into their own repo.

At my first gig, we used SVN with Eclipse, which was pretty awesome. It had great merge functionality, it had great team support, and I even learned how to branch from mainline development in order to do my own projects. I did not learn, however, how to merge said branches back in any way which did not involve madness and suffering. Oh, and people would sometimes break the build, and if you were lucky you read that email (if they sent it!) before you updated in the morning.

My first few encounters with git were again using it as a distributed file share, this time hosted on Github--from hackathons and the like. I did not receive a very good explanation of it other than "that's what we're using for this project"; I suspect that unless you are really careful it is hard to explain to somebody new to git how to use it if you have experience yourself.

I later learned to use git to have multiple repos to push to, one for code, one for staging, and one for production. It was the most magical thing in the world--`git push production master` and then Heroku is showing my new website.

I finally learned branching and merging when doing my startup earlier this year; I'd heard about doing topic/feature branches, and we developed a workflow somewhat like GitFlow. I learned how that worked, and barring the occasional screwup found it very, very useful.

I'm currently implementing a helper tool for CI and issue tracking with GitFlow-style workflows. I've had to learn more about how to use the tool, how to manage branches, and all other things.

~

git is a much more complicated tool to use, effectively, than SVN--at the same time, I think that getting there is worth it.

I further think that people starting out learning a VCS would be well-served to use SVN; combine it with TortoiseSVN on Windows and it's pretty simple. `svn update`, `svn commit`.

That done, when you have a workflow where it makes sense, switch to git. Git shines for letting you rapidly test things out, and keeping you from stepping on other people's toes.

I have used SVN for remote team work, and for certain things it's great-- library development, things where you _need_ people not to sit on commits easily, etc. I think that SVN is a great tool for newer developers, and I think that it has uses to this day.

That said, once everyone is up to speed on basic git, your team should make the transition, because it enables you to have more complex workflows and do more powerful work.</comment>


Today's world is amd64, armv7, and soon aarch64. Everything else is dead, Jim - vezzy-fnord http://pastebin.com/W9RbUUN1 <comment><AUTHOR> What is the context for this, and who wrote it? Interesting read.

<comment><USER2> (Former)OpenBSD developer, Miod Vallat: [https://twitter.com/MiodVallat/status/669253976261570561](https://twitter.com/MiodVallat/status/669253976261570561)</comment></comment>


The Anthropocene Is a Joke - <AUTHOR> https://www.theatlantic.com/science/archive/2019/08/arrogance-anthropocene/595795/ <comment><USER2> > The idea that we're in a new epoch is a profoundly optimistic one, for it > implies that we'll persist into the future as an industrial technological > civilization on something like a geological timescale [...] perhaps we > should more humbly refer to this provisional moment of Earth history that > we're living through as we do the many other disruptive spasms in Earth > history. Though dreadfully less catchy, perhaps we could call it the "Mid- > Pleistocene Thermal Maximum." After all, though the mammoths are gone, their > Ice Age is only on hold, delayed as it is for a few tens of thousands of > years by the coming greenhouse fever. Or perhaps we're living through the > "Pleistocene Carbon Isotope Excursion," as we call many of the mysterious > global paroxysms from the earliest era of animal life, the Paleozoic. Or > maybe we're even at the dawning of the "Quaternary Anoxic Event" or, God > forbid, the "End-Pleistocene Mass Extinction" if shit really hits the fan in > the next few centuries. But please, not the Anthropocene.

</comment><comment><USER3> > Whereas some epochs in Earth history stretch more than 40 million years, > this new chapter started maybe 400 years ago

There had to be "a first month of Cretaceous Period" sometimes.

</comment><comment><USER4> Agreed.

The next epoch will begin the moment the first AI become sentient.</comment>


Ask HN: Feedback on my project (QuoteFinch.com) - <AUTHOR>

The idea behind Quotefinch, is to allow users to request quotes from multiple companies with minimal effort.
Many times I've found myself on the phone calling all these different companies trying to find out if they offer what I need...and what is the price.
I wanted to create a service to make it easier for people and companies to find companies who are offering what they need.
So say you are looking for quotes for web design service, wedding services, seo consultancy service, janitorial services even insurance or quotes for landscaping. The idea is you use the site/service to make your request. Then we broadcast your request to the relevant companies for them to respond to you.
So this way, the companies come to you with their price/offer, rather than you go hunting around for them.
What do you guys think?
All feedback is welcome.
URL: http://quotefinch.com <comment><USER2> Nice clean looking site. You've done an ok job of explaining what you do, but for the b2b (or b2c) space, I think you need to provide more detail in how the service works.

Testimonials would be good, but it would be really beneficial to know that you have businesses in your contacts list.

As the example you gave coryl. If I needed sound equipment or a caterer and I am using your service, how do I know you have these contacts, and that you are the best source?

Are real people working with quotefinch to get my quotes together? or is it all done by a computer? What can I expect?

At the moment I think it's a bit light on those details.

As for using the little twitter bird in your logo, what is the purpose of that? Does your service do something with twitter? If not, i'd remove that just to get rid of any confusion.

<comment><AUTHOR> Thank you so very much for your feedback. Below are some response to the concerns your raised:

"Testimonials would be good, but it would be really beneficial to know that you have businesses in your contacts list." >>>>ANS: Honestly the site is in the very early stages. So I really don't have anybody using it as yet to be able to provide testimonials. Hopefully soon I could get something up and running and get some users to provide testimonials.

"As the example you gave coryl. If I needed sound equipment or a caterer and I am using your service, how do I know you have these contacts, and that you are the best source?" >>>>ANS: Users will select a category they want to make a request in eg: Sound Equipment Services. When they select a category, they will see all the companies who are providing that particular service. So even before they post their request, the could browse thru the list and know all the companies who will receive their request.

"Are real people working with quotefinch to get my quotes together? or is it all done by a computer? What can I expect?" >>>>ANS: All done by computer. I think my answer above should cover this. If not, let me know and I'll clarify more.

"As for using the little twitter bird in your logo, what is the purpose of that? Does your service do something with twitter? If not, i'd remove that just to get rid of any confusion." >>>>ANS: The bird was suppose to represent a Finch. I guess I can remove it if it's more misleading than relevant.

<comment><USER2> Thanks for the responses. Most of what you said was what I would have guessed, but wanted to give you the perspective of a customer that doesn't know.

These I see as road-blocks in getting people to use the service. It isn't as easy to understand as you may think. A quick 'this is how it works' demo with screenshots (video might not be as good for this) would probably be helpful.

I totally didn't get the Finch thing. I don't know what a finch looks like, but I know what the twitter bird looks like.

</comment></comment></comment><comment><USER3> I've used sites like this before for my mortgage, auto insurance, home renovation and looking for a lawyer and I really don't like them. For one, almost no one will give you a real quote. Even if I describe, in detail, the work that will be required and request a range, I always get a generic email that says "Please call us". Well that was useless. I also don't generally get a lot of responses, just one or two. And those one or two like to spam me with generic emails. Overall it accomplished nothing that a quick Google search couldn't do.

I would say, if you really want to enter this space, make sure your service doesn't end up like this and then advertise it as such to prospective buyers.

</comment><comment><USER4> Have you looked into the countless other "job/project" outsourcing sites? What do you do differently or better than them?

<comment><AUTHOR> To me these sites are great for project/IT work. But say I'm organizing a party, and I need sound equipment. I'd like to get quotes from different companies who rent sound equipment in my area.

Or say, I need some caterers for the event. I would like to find out if they can provide me with what I want, without calling each of them.

</comment></comment><comment><AUTHOR> Clickable url: <http://quotefinch.com></comment>


The Extraordinary Reinvention of Square - <AUTHOR> http://fortune.com/2015/08/02/square-reinvention-ipo-dorsey/

<comment><USER2> > In other words, Square today is more of a financial services company than a > consumer product company

They are becoming a B2B software company, building back-office tools. Square Capital is a financial service, but a majority of the new products they've rolled out are small business software products.

One critical question not yet addressed is how Square handles the impending (October) switch to ship and pin readers. My guess is they take a one-time charge by shipping new readers to every customer; otherwise they are open to a competitor swooping in.

> With Wallet's demise went Square's Starbucks partnership that allowed people > to pay for their coffee using the app (though the company continues to > process payments for Starbucks)

Fortune neglected to mention how disastrous that deal was for Square. They lose money on every transaction. They spent, and continue to spend, substantial money for press and acquiring a customer outside their target market (small businesses.)

Lastly, there is no criticism that they have filed for an IPO while there CEO is also the temporary CEO of another public company. That's an incredible distraction at a difficult time for any company — exactly the moment when you want your leadership focused on getting everyone on the same page.

<comment><USER3> Square is offering the readers for $50 and then over the next 3 months they will waive up to $50 of processing fees.</comment></comment>


We are under attack - <AUTHOR> https://en.greatfire.org/blog/2015/mar/we-are-under-attack <comment><USER3> No one likes DDOSes from China. One can plead Amazon as much as one wants. Pay or get booted, there are probably 2 engineers paid 6 figures a year by Amazon getting paged for this DDOS, someone must pay for the time they spend tuning DDOS protection instead of their primary project to make attacked website accessible for everyone else.

Source: worked for AWS, was oncall during similar attacks. Nasty things with those they tend to start around 6-7PM (guess when does working day start in China).

<comment><USER4> Why don't providers just set up a system that creates a country-level null route for a given destination IP? And have a UI with a checkbox for the user to do it, for any selected country. It would mitigate the issue, and once it's over, the user can un-restrict traffic / or just keep blocking if it's a non- valuable source.

I know you can do this on the server, using many different techniques. But this does not help as the traffic still reaches you (that you have to pay for).

You can also do this with Geo DNS (and get much less of a bill).

And the ISPs, datacenters, and anyone with a router can block ASIA or China allocated IP ranges. Especially if it's not the type of a flood that's designed to attack the routers (instead of the web-server).

So what's stopping Amazon?

<comment><USER5> The point of their website is to make censored content available to Chinese users.

China is attacking them to prevent Chinese people from reading the website.

Your suggestion is to make the site unavailable to China.

Do you see why it is not a solution? You are basically setting up a market for censorship-- the attack doesnt ever have to end-- depending on how much China is willing to pay to keep the website offline.

<comment><USER6> OTOH if the great firewall already blocks this site, wouldn't that mean normal Chinese citizens would access it through a VPN via another country?

<comment><USER7> If normal citizens had access to a VPN in which to access this site from another country, it would be quite redundant to use this site then wouldn't it? Maybe I'm not understanding.

<comment><USER8> If normal citizens have access to it without a VPN, then why doesn't China just block it with the firewall instead of ddosing?

Maybe I'm not understanding.

<comment><USER7> Yeah, no -- my fault. I wrongly assumed it was some type of proxy or way to get around the great firewall.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Contact Akamai who recently bought the DDOS mitigation service Prolexic. They may be able to mitigate the attack and save you bandwidth costs.

Alternatively, call CloudFlare.

Don't just absorb this through Amazon.

<comment><USER10> CloudFlare is probably not a good choice. They recently blocked access to a similar service, Lantern, per the linked WSJ article.

 _" CloudFlare, which offers content-delivery network services, said last week it cut off Lantern's use of the service, saying it was unauthorized. "We don't do anything to thwart the content restrictions in China or other countries," said Matthew Prince, chief executive of CloudFlare. "We're a tech company and we comply with the law.""_

[http://www.wsj.com/articles/u-s-cloud-providers-face- backlas...](http://www.wsj.com/articles/u-s-cloud-providers-face-backlash- from-chinas-censors-1426541126)

I'm not very impressed. Maybe someone from CloudFlare is around to defend that position further.

<comment><USER11> > "We don't do anything to thwart the content restrictions in China or other > countries," said Matthew Prince, chief executive of CloudFlare. "We're a > tech company and we comply with the law."

There's a popular idea that businesses (and people) have no responsibilities to anyone but themselves, because what they have is theirs; they built it themselves. But if you think about it a little, it's obviously false. Here's a more accurate statement:

 _We 're a tech company whose success is completely dependent on the freedoms in our nation and many other nations around the world, and on the political and economic systems, infrastructure, and enormous wealth that blossomed from them. Without the sacrifices of blood and treasure by our predecessors of hundreds of years, and of many people today, we would not have these resources or opportunities today. There are many talented people born in many countries who, without these benefits, have no opportunity for success._

They can't sacrifice their company for every principle, every time, but there's a middle ground between that and 'we're just a tech company so we have no responsibilities'.

<comment><USER12> > There's a popular idea that businesses (and people) have no responsibilities > to anyone but themselves.

It's not just a popular idea, it's why they are created as firms instead of philanthropies. There is a difference and it does matter what the expectations of the donors/investors are.

> We're a tech company whose success is completely dependent on the freedoms > in our nation...

This sounds great but how is it reflected in company policies?

> They can't sacrifice their company for every principle, every time, but > there's a middle ground between that 'we're just a tech company so we have > no responsibilities'.

A company could easily make a statement to its investors about its moral stance on issues that it expects might harm the bottom line.

The company does have responsibility to its investors not to go rogue and burn cash just because it feels good. Most of the time the kind of corporate behavior that you praise is actually clever PR that costs the companies little.

<comment><USER13> Everyone has a responsibility to the world around them.

It may not be coded into law, but it is still a true statement.

<comment><USER12> Not sure how you thought my sentiments disagree with that.

</comment></comment></comment></comment></comment></comment><comment><USER14> Sitting down and writing a blog-post seems a pretty laid back reaction to $30k/day in Amazon bills...

First thing I'd have done is _take the site offline_ and call the various DDoS mitigation services (Incapsula, Cloudflare, etc.).

Pretty surely most of them would gladly pick up the slack here, given the free PR (possibly even in mainstream press) they get in return.

<comment> pi-err Not sure that turning the light off is the first thing you want to do when you're bullied.

And pretty certain that there's zero PR value in those stories.

<comment><USER15> They wouldn't just be giving in, it would take less than a day to get up and running on CloudFlare. That is probably worth avoiding $30k bill, especially for a non-profit.

As for PR, there absolutely is good will towards organizations that take on censorship. This is the #1 story on HN, so a company stepping in and saying "we got this covered, free of charge" not only shows they are good people, but also gives would be customers an idea of the quick implementation cycle for their CDN + the load it can handle.

Real world use case + helping to stop censorship = great PR

<comment><USER16> This is exactly what I was thinking. I read the blog post, then came to the comments. I completely expected something along the lines of ... "Hey, I'm the VP @ SomethingTech, we like what you're doing and will help you mitigate the attacks for free if you get in touch with us." ... to be the top comment here.

</comment></comment></comment></comment><comment><USER17> Move to OVH -- they offer free DDoS protection as standard, and unlimited bandwidth. I just moved to OVH after getting DDoSed. I'm paying $109/month for a quad core 3.7Ghz Xeon, 64GB RAM, dual 2TB software RAID. It's a pretty sweet deal, and I haven't had any problems so far.

<comment><USER18> Unrelated to the story at hand. Have you been recently DDoSed on OVH? I know that (at least some time ago) they just null-route/deactivate your account on spot with no notification on anything that looks like a DDoS.

<comment><USER19> This may be true. However, they are FAR more inclined to work with a customer before just flipping a switch like a lot of (for example) American hosting companies will. I have nothing but good things to say about OVH. They were helpful during a DDoS I had about a year ago throughout the incident, but I'm sure they would have nullrouted me had I not been so responsive to their support guys when things started going badly. "I'm sure" here is pure anecdote and based on zero evidence, but it's the feeling I got.

</comment></comment></comment><comment><USER20> > Because of the number of requests we are receiving, our bandwidth costs have > shot up to USD $30,000 per day.

Perhaps the US State Department might be inclined to help?

<comment><USER21> This is the correct answer. Given that this website is part of the 'civil society' sphere, it likely already gets taxpayer money from the State Department. They should go to their funders - be they public or private - <USER2> ask for help with their mission - I'm not sure it's appropriate to ask individuals for help.

<comment><USER22> But the funders won't solve this problem though, only mitigate it. (though I agree it's something they definitely should do ASAP) Putting it out there like this, seems more likely to overcome the technical difficulties of it.

<comment><USER23> I nice anti-China spin might be part of the mission...?

</comment></comment></comment></comment><comment><USER24> Google's Project Shield could help?

[http://www.google.com/ideas/projects/project- shield/](http://www.google.com/ideas/projects/project-shield/)

<comment><USER25> Yes, Project Shield is the best solution.

</comment></comment><comment><USER26> This is interesting. Though Hacker News appears to not be blocked, it has been flagged as "Contradictory" on certain days. Is the Chinese government blocking certain news items?

Take a look here: [https://en.greatfire.org/news.ycombinator.com](https://en.greatfire.org/news.ycombinator.com)

<comment><USER27> If you click on the day in the calendar to look at the details, the "Contradictory" status is when some of their test servers work and others don't. For this site in particular, there are several servers showing a timeout and no data received. So it's possible that HN is being partially blocked.

<comment><USER28> It looks specifically like cURL's exit value and the downloaded page size varied on some requests. It would be interesting to know what the contradictory download size was, and what the curl exit value was.

<comment><USER27> All that is there when you click on the date, if you scroll rightwards. The exit values in the blocked sites are timeouts (CURLE_OPERATION_TIMEDOUT), and the broken download sizes are 0 bytes.

</comment></comment></comment></comment><comment><USER29> You should trace the attackers by tracing back. Work with your upstream providers and mailing lists (NANOG) and publicly shame these attackers. Likely, they are spoofing addresses - validate that and make sure you let the network know where the spoofed traffic is sourcing from to follow BCP38 and BCP84, defined by RFCs 2827 and 3704.

<comment><USER30> Assuming it is direct spoofed traffic and not a reflection, naming and shaming will accomplish nothing. Names of the big ISPs allowing this are not a secret.

</comment></comment><comment><USER31> "We need help to manage this. If you have expertise in this area, please contact Charlie Smith or ping us via Twitter."

Step 1 : Unleash DDos Attack against target

Step 2 : Wait for the the target to become overwhelmed and ask for public assistance

Step 3 : Contact the target under the guise of being able to help

Step 4 : Win trust of Target after "mitigating" the attack you are actually in control of

Step 5 : Repeat until enough access has been gained

</comment><comment><USER32> First a 2.6bn request/hour DDoS and then making the front page of HN... talk about getting flooded with requests.

Hopefully making the front page will at least get them the attention of Amazon or enough donations to cover the temporarily (absurdly) high operating cost.

<comment><USER33> They claim they're able to handle the 2.5bn req/hour right now, and if thats true, the HN traffic wouldn't even be noticable

<comment><USER32> Yeah there might've been a smidge of sarcasm in there

</comment></comment></comment><comment><USER34> With a mission such as yours, I would think Cloudflare (or similar) protection is a must.

</comment><comment><USER35> A number of the DDoSes from China are involuntary induced by DNS Poisoning. When users query a block dns name, they may receive an IP other than the website they want to visit. It may used to redirect traffic to make DDoS without those 'drones' even know about they're involved. Just like for a week long, whenever I try to access Facebook, I got redirected to some german IP, and receive a TLS CN mismatch error.

</comment><comment><USER36> Are you using Cloudflare?

<comment><USER37> A lot of CloudFlare IPs are blocked by the chinese firewall, for a site that's primarily aimed at chinese users probably not an option.

Edit: I don't actually know if this is still true and on what scale, I just know that's it's true for a website I use according to chinese users.

<comment><USER38> Even if it is true, getting an enterprise account, which is still very reasonably priced, gives you dedicated IP addresses to your site, so this shouldn't be a huge concern. Generally when under fire, Cloudflare is also happy to get you up and running and talk finer details on billing for the long term later.

The bigger problem is their stance on Latern mentioned above.

<comment><USER38> Honestly a bit confused on the downvotes, was just trying to provide additional information for people who aren't familiar with working with CF. Anyone care to enlighten me?

</comment></comment></comment></comment><comment><USER39> I hope you keep us up to date. I live in the US and I've had accounts suddenly locked out after their passwords were changed even for criticizing some Chinese issue. Several email accounts, among other sites. With the amount of money the Chinese are spending, I think it's not going to be easy in the US. Maybe you're an American and things will be easier for you, but I've learned not to trust the natives. Not even their law enforcement.

Maybe the corporations might be more stable and have more integrity, but you have to realize that China is the largest economy in the world now, and they can flick Amazon out of their market with their pinky and not even blink.

</comment><comment><USER40> Isn't this title a little sensationalist without specifying who's under attack? I assumed it was a royal we and after clicking the link realized it was just this one site.

<comment><USER41> It's the title of the blog post that's being linked to. With that title being transplanted to HN, you need to consciously think about what the context is supposed to be, which is why HN lists the source domain.

</comment></comment><comment><USER42> Maybe [http://www.google.com/ideas/projects/project- shield/](http://www.google.com/ideas/projects/project-shield/) can help?

</comment><comment><USER43> State sponsored cyber warfare is something that happens at a scale that normal private companies and organizations are not well equipped to deal with. I wonder if there's someone you can alert in the government who can consider coordinating a counterattack or pass a backchannel note to the right people to cut it out.

<comment><USER44> Calling a simple DDoS cyber warfare is a bit hyperbolic when we know there are actual sophisticated attacks being carried out against far more important targets.

</comment></comment><comment><USER45> How effective would this solution be:

[http://www.linuxjournal.com/content/back-dead-simple-bash- co...](http://www.linuxjournal.com/content/back-dead-simple-bash-complex-ddos)

<comment><USER46> A similar approach is linked to in the article's comments in [http://www.inetbase.com/scripts/ddos/ddos.sh](http://www.inetbase.com/scripts/ddos/ddos.sh)

from [http://deflate.medialayer.com/](http://deflate.medialayer.com/)

</comment></comment><comment><USER47> Should the Chinese government have the power to shield their citizens from information and monitor them electronically?

Should a group of people in democratic, Western countries be able to subvert the will of a world superpower with impunity?

Of the two scary worlds, I guess I'd rather choose the latter. But I don't even like having to choose.

(I doubt Amazon like being asked to choose even less, and I would be surprised if they cut you any slack. Sedition is not looked upon favorably, and abetting those perpetrating it is not either.)

<comment><USER48> >Should a group of people in democratic, Western countries be able to subvert the will of a world superpower with impunity?

Crazy time we live it that this is even possible.

<comment><USER49> I'd suggest that the ability to perform a subversion of the will of a foreign state is a necessary adaptation, preventing a nominally democratic state from sliding towards aristocratic, oligarchic, or plutocratic governance.

The ability to increase freedom in a foreign state is related to the ability to prevent a decrease of freedom in your own.

Inconvenient websites help uphold the duties of the fourth estate when mainstream media outlets have seemingly abandoned--or at least heavily de- prioritized--those duties. It is important for all governments, not just those with sketchy human rights records, to know that even the mightiest machine can be taken offline by a single wooden sandal.

</comment></comment></comment><comment><USER50> For human rights, civil society and media working in difficult DDoS threat environments check out these guys, they are awesome ---> Equalit.ie [https://equalit.ie/](https://equalit.ie/) who run a DDoS project called Deflect - which I think is free for people in those categories of people. [https://equalit.ie/portfolio/deflect/](https://equalit.ie/portfolio/deflect/)

</comment><comment><USER51> Call [http://equalit.ie/](http://equalit.ie/) \- they have a free open source tool for exactly this!

</comment><comment><USER52> Out of curiosity, who pays more -- the attacker or the victim? Purely from a monetary perspective.

Edit: never mind, figured it's obvious.

Aren't DDoS requests pretty much simple GET requests? Is it not possible to determine which requests to serve and which ones to ignore?

<comment><USER53> These days, DDoSes are not just lots of GET requests, because, as you said, they're fairly easy to mitigate. These days, the most common attacks are various UDP-based attacks, like NTP reflection [1]. You send a spoofed header to a server that speaks over UDP, and they send a huge amount of traffic to the victim.

[https://blog.cloudflare.com/understanding-and-mitigating- ntp...](https://blog.cloudflare.com/understanding-and-mitigating-ntp-based- ddos-attacks/)

<comment><USER54> Couldn't something like that be blocked at a firewall level with AWS though, i.e. drop everything except TCP port 80?

</comment></comment></comment><comment><USER55> I hate that this is happening, but isn't this something you have to expect/prepare for when your business involves controversy?

Not to mention when the people who don't like you have the resources of nation states.

</comment><comment><USER56> They couldn't wait a day?

[http://gizmodo.com/china-finally-admits-it-has-an-army-of- ha...](http://gizmodo.com/china-finally-admits-it-has-an-army-of-hackers-for- cybe-1692188006)

<comment><USER44> Perhaps next week they'll admit they have a navy.

</comment></comment><comment><USER57> It would be interesting to see which IP space the bulk of the traffic is coming from. Seems like it would be trivial for the Chinese government to spoof traffic from any IP within China...

<comment><USER58> For a DDoS, you can spoof your IP to anything, because you don't care about actually receiving response packets. This is standard in a SYN flood.

</comment></comment><comment><USER59> Post the IP addresses from which you're getting attacked. Others can analyze them by ISP, and public pressure on the worst ISPs might help.

<comment><USER60> The bad ISP in question is the People's Republic of China.

<comment><USER59> I mean post the whole IP address list for public analysis.

<comment><USER60> Honestly most companies I've worked for have blocked the entire Chinese IP block. Obviously Chinese hackers can use proxies but it honestly does cut out a TON of problems. The downside of course is you will never get a Chinese customer/viewer. In preparing to respond to this post I googled "China IP block" and pretty much every result was about how to configure .htaccess or iptables to block the entire country.

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

</comment><comment><USER62> I wonder if the US gov't wouldn't mind donating $11m/year to this org to deal with the increased costs...

</comment><comment><USER63> The more I watch the security theater, the more this all looks to be set-up. I really don't fear the chinese, as the NSA is far more competent and organized, and is much more dangerous to the world at large, not just the citizens of the United States.

anyone remember that story a few days ago where China said "Hey, we want NSA- level backdoors in hardware, too!"? can someone help me with a link?

</comment><comment><USER64> Isn't this what CloudFlare has built a reputation for defending against?

</comment><comment><USER65> when stuff like this happens it would be nice if we could simply refuse to route all traffic originating in the offending countries until the attack is over.

</comment><comment><USER66> It seems a little hypocritical to me that AWS will create a service for every technology known to man, but will not create a service to help companies who rely on their infrastructure to deal with DDoS.

</comment><comment><USER67> Could we block this in ISP?

</comment><comment><USER68> yawnnnn...

wake me when the clickbate is over.

</comment><comment><USER69> This thread brought to you by the CloudFare PR Agency.

</comment><comment><USER70> \- Nginx instead of Apache

\- Use memcached+nginx to load the drupal content instead of calling up PHP each request (PHP saves the page in memcached, nginx reads it from there).

\- put it all behind CloudFlare

This works for Wordpress too.

</comment><comment><USER71> I think they need to use something similar to this ...

[http://en.wikipedia.org/wiki/Coral_Content_Distribution_Netw...](http://en.wikipedia.org/wiki/Coral_Content_Distribution_Network)

<comment><USER71> I would appreciate it if people who down voted my comment explained to me if it's because i'm wrong or because they don't understand what i am trying to say or just for the heck of it :).

<comment><USER54> The issue is your comment doesn't really add any value. Anyone can paste a random link saying "you should use this" but it takes effort to explain why it would be useful to them. HN comments are about fostering discussion, so say something to be discussed :-)

<comment><USER71> Thank you for your input, but 1. this is not a random link, 2. the explanation is all inside the link i posted, so why to be redundant? anyways, if i didn't care for a discussion i wouldn't post it at the first place and i wouldn't later ask why was i downvoted, thank you again for your opinion lucaspiller.

</comment></comment></comment></comment><comment><USER72> If you're paying $30000 for a site that is pretty much all static in bandwidth costs a day, you're probably paying about $29990 too much.

<comment><USER73> 2.6 billion requests per hour will do that to you

<comment><USER74> Route them through a cached captcha page. Or just call cloudflare.

<comment><USER75> Serving a captcha page is _more_ work than serving a static page.

<comment><USER76> You can block with firewall IPs of users, who didn't solve captcha. You will get only SYNs from incoming connection requests then.

<comment><USER77> You don't really understand the distributed part of DDoS. I've had services taken down my attacks and when doing a post mortem we could see the increase in traffic, but when accounting for frequency, our office was still the main user.</comment></comment></comment></comment></comment></comment>


Stack – JavaScript Implementation - <AUTHOR> https://github.com/WithGJR/stack-js-implementation <comment><USER2> Sorry, but [http://codetunnel.com/9-javascript-tips-you-may-not- know/#st...](http://codetunnel.com/9-javascript-tips-you-may-not-know/#stack)

<comment><AUTHOR> I need to limit the size of the stack and I want to remove the bottom-most element of the stack before pushing the new element to the top-most position of the stack if the stack has reached the max size.

I think if I use the traditional array, it will be very slow because you need to spend a lot of time on moving, so I finally decide to write my own stack implementation using linked-list.</comment></comment>


Samsung tablet not 'cool' says UK judge - <AUTHOR> http://www.bbc.co.uk/news/technology-18773690 <comment><USER2> <http://news.ycombinator.com/item?id=4217807></comment>


Opinion: Apple's dangerous new nanny app - <AUTHOR> https://www.marketwatch.com/story/apples-dangerous-new-nanny-app-2018-07-16 <comment><USER2> Some valid points, but misses one key point - when you have the data right in front of you, it's more difficult for the child to argue with it. Currently it goes like this: Mom: "No more Snapchat, you've been on it too much."

Kid: "I've only spent 2 minutes on Snapchat! You're so mean!"

Mom has no real way of telling if it's accurate or not, so it's then "Ok, just a few more minutes."

Now, mom can say "You've spent 2 hours on snapchat. Here's the proof."

Basically, parents now have more data and instead of saying "no more, because I said so" they have graphs to say "See? Too much time." Kids aren't always the best at estimating time, and showing them helps them learn and deal with it accordingly. How many times have you had kids say "Just 5 more minutes" that somehow turns into an hour?

Screen Time isn't a replacement for parenting, but can be a helpful tool in the toolbox for many parents.</comment>


Providence as a cybercity, No. 13 for high-tech job growth  - <AUTHOR> http://www.pbn.com/Providence-as-a-cybercity-No-13-for-high-tech-job-growth,54240

<comment><AUTHOR> story refers to this $150 report, _"Cybercities 2010: The Definitive Analysis of the High-Technology Industry in the Nation's Top 60 Cities"_ ~ <http://www.techamericafoundation.org/cybercities></comment>


Lunar Iditarod Race Contest - <AUTHOR> https://www.revuprender.com/lunariditarod/

<comment><USER2> Cute. But a rover for the moon is an entirely different creature than a rover for the earth. Temperature, soil, vacuum, solar radiation. The three winning Earth entries are likely to just curl up and die on the moon in seconds.</comment>


Adobe UI Gripes - <AUTHOR> http://adobegripes.tumblr.com/ <comment><USER2> I hate how being harsh has become fashionable. What ever happened to manners?

<comment><USER3> Not a defence, but hey, Adobe started it. With their crock-tastic installers, their updating of updated updaters, _everything_ to do with Acrobat and Reader, app bloat, market segmentation gone nuts, rip-off pricing for Europe, vulnerability-inducing setups (like bundling a needless, insecure copy of Opera) and launch times measured in aeons, they've treated their users like dirt for years.

That doesn't engender politeness.

<comment><USER4> They sure did! Flex is the first truely buggy language and runtime I've ever had the displeasure of working with, and I keep a list similar to this (but far less safe for work). I keep mine private since I don't want my name to be associated with it, but I'm cheering this guy on.

I'm focusing my energy in a far more positive way - I'm switching to Haxe, which lets me independent of the Flash tools, and also swap away from Flash Player/swf when a better alternative comes along (it wouldn't be hard to make one, it's sad that their only real competition is from the even less competently made Java for the web).

</comment></comment></comment><comment><USER5> sickens me how unloved Fireworks is.

<comment><USER6> Ditto. I remembered the day that Adobe bought Macromedia. My first thought was, "F#CK! They're going to turn Fireworks in to a piece of crap". Sure enough, they turned it into a piece of crap.

So much for competition!

<comment><USER7> I'm still nostalgic for Cold Fusion Studio 4. That was even back before Macromedia bought Allaire, but still today it would rank as the second best development environment for HTML and Javascript (after VS.NET, but only because it has a good debugger to offset its lame HTML & JS intellisense).

Then they folded it into Dreamweaver and ruined it completely by version 5.

<comment><USER8> I used to use that for all my development too and thought it was great at the time. I even wrestled with it's crazy syntax highlighter to get ActionScript colour coding working. The lack of Unicode support became a bit of a problem for me towards the end though.

</comment></comment></comment></comment><comment><USER5> dearadobe.com

</comment><comment><USER9> I had a Turbo button on my first computer. What was it supposed to do? I think I always pressed it because, hey, faster is better than slower.

<comment><USER10> Coding Horror has the answer: <http://www.codinghorror.com/blog/archives/001173.html>

It's a compatibility feature, allowing older software to run at the speed it was intended to run at (mainly games).

<comment><USER11> But really just to put the word 'turbo' on your machine, to make it seem faster.

I had what, 3-5 PCs with that switch on there, and never once used that feature.

</comment></comment></comment><comment><USER12> By far the my #1 gripe is the lack of consistency between Illustrator and Photoshop.</comment>


Cosplayers who are not white, thin, or physically able thrive at NY ComicCon - <AUTHOR> https://www.syfy.com/syfywire/cosplayers-who-are-not-white-thin-or-physically-able-thrive-at-nycc <comment><USER2> Not that there's anything wrong with being white, thin, or physically able...

<comment><USER3> I myself am pasty and pudgy. But now that I can climb seven flights of stairs without breaking into a sweat, I _feel_ superheroic. (Thanks, kettlebell workouts.)</comment></comment>


V8 benchmark run against ActionScript in a wide amount of browsers/FlashPlayerss - <AUTHOR> http://iq12.com/blog/as3-benchmark/

<comment><USER2> And still, the other (rendering) benchmarks where Flash generally leads got no comments and no upvotes.

<http://news.ycombinator.com/item?id=2649759>

Seriously Hacker News.

<comment><USER3> Thanks for the link. Yes is it sad that many (most?) developers are only paying attention to the headline CPU benchmarks rather than the GUImark 3 benchmark which for me is much closer to real world apps.

The GUImark benchmark tests clearly show that while Flash video on current mobile devices is not quite as good as HTML5 (because of Flash's lack of support for Video Hardware acceleration - which apparently is fixed with Flash 10.3?), for Bitmap and vector rendering Flash still has a X2 performance advantage.

</comment></comment><comment><USER4> The irony of it is that Adobe took AS2 (wich was ECMAScript) and turned it into a Javesque language. Not only javascript has blossomed, but performance was always coupled to the static nature of AS3.

In short: they moved the language to the opposite direction of where most people are going, and also ended up with a slower statically typed language.

<comment><USER5> The situation is not quite so cut and dry, I think. AS3 was supposedly intended to be an implementation of ECMAScript 4, which was derailed by the (ECMAScript 3.1) Harmony project.

Also, I believe the Tamarin AS3 compiler used by Adobe is a collaboration with Mozilla, and both the Adobe Flash Player and Mozilla TraceMonkey engine use the same JIT compiler.

<comment><USER6> I believe they use the assembler but not the whole tracer. I think the modifications were too heavy so it was pretty much replaced. I could be wrong though, I can't find the reference.

</comment></comment></comment><comment><USER7> I think the site is down. Google text only cache here:

[http://webcache.googleusercontent.com/search?q=cache:Np7ljkB...](http://webcache.googleusercontent.com/search?q=cache:Np7ljkBgJloJ:iq12.com/blog/as3-benchmark/+iq12.com+benchmark&hl=en&gl=us&strip=1)

Update (chart): <http://imageshack.us/photo/my-images/819/chartb.jpg/>

Best i could do from online caches, hope this site comes back cause I'd like to see a bigger chart.

<comment><USER8> I think there used to be some diagrams, so the text-only version might not be the whole picture. Unfortunately that's all we can get right now.

<comment><USER9> yes, a lot of the information was in the graphs

graph information, paraphrased from memory:

actionscript comes along, performance bumps up slightly every few years. all browsers start below actionscript, but over time they surpass it. Average performance of different js versions has climbed sharply over time, whilst performance of actionscript has increased only slightly</comment></comment></comment>


Microsoft demos muscle-computer interface, air Guitar Hero now a reality - <AUTHOR> http://www.pcgerms.com/muscle-computer-interface-demoed-by-microsoft-lets-you-control-the-computers-through-your-bodys-muscles/

<comment><USER2> While I love the fact that the gaming division of Microsoft seems to be genuinely innovative and doing some really great stuff with interfaces, I'm still really unconvinced by the actual games that are produced.

Wii, Kinnect and Move are all fun for a while but there really aren't many great titles taking advantage of the new controllers and this feels like it's more of the same - innovative, novel but ultimately not something that's going to produce really great game which for all the hype is what these things should lead to.

Obviously there might be possibilities beyond gaming but in that area I'm not convinced anything that requires physical sensors on the body is likely to become part of a mainstream UI.

<comment><USER3> > Wii, Kinnect and Move are all fun for a while but there really aren't many > great titles taking advantage of the new controllers

My feeling is that innovative software solutions come a good amount of time after the release of hardware that enables them; gaming consoles just don't keep the hype alive long enough to pick sufficient interest.

> I'm not convinced anything that requires physical sensors on the body is > likely to become part of a mainstream UI

Maybe not, but the physical sensors could be attached to a structure resembling a bracelet. Make it wireless and aesthetically pleasing, and I could see myself wearing one without feeling silly.

<comment><USER2> > My feeling is that innovative software solutions come a good amount of time > after the release of hardware that enables them; gaming consoles just don't > keep the hype alive long enough to pick sufficient interest.

I'd buy that argument more if there were more great titles for the Wii (which has been around ages now) that really used it's remote.

(And I don't believe it's because the Wii is under powered in any way. Yes it's not a powerful console by todays standards but people have managed to create great, compelling games with less power than the Wii has.)

> Maybe not, but the physical sensors could be attached to a structure > resembling a bracelet. Make it wireless and aesthetically pleasing, and I > could see myself wearing one without feeling silly.

I wasn't really thinking about making it look great, just looking at the pictures there are a fair number of sensors in non-convenient places (higher up the arm than the wrist and the diagram shows them all over the body). Maybe they'll improve it but I'm not convinced that you'd get a really good range of movements monitored without considerable coverage.

</comment></comment></comment><comment><USER4> I am working in a lab that is developing a similar technology, the main difference being we use a single muscle site to control two degrees of freedom (primarily moving a cursor on a screen). We are also working on applications for severely paralyzed individuals who can use the "ear wiggling" muscles (auricularis superior--the side of your head) to control anything from a television remote to a motorized wheelchair. The control isn't perfect, but with a few hours of training most participants are achieving cursor-to-target accuracies of around 80%. One participant was able to reach 100% in one session.

It is fun to play with a muscle-computer interface for a while, but I don't think it will catch on as a heavy-use gaming controller unless they significantly improve upon current technology. It is simply too imprecise, though on/off (button) control like what is used for Guitar Hero is better suited for it than x,y movement of a cursor. Trying to control the equivalent actions of what you can do with a PS3 controller is out of the question.

<comment><USER5> Would most or all participants reach cursor-to-target accuracies in the 98-100% range if you allowed them to continue training indefinitely?

<comment><USER4> Probably yes. Our focus so far has been to demonstrate that it is physiologically possible to control multiple degrees of freedom with a single muscle site, so we haven't done extensive testing to address that. It's also worth noting that hitting a target and having very precise control of movement, as you would with a mouse, are not the same. I doubt the precision would ever reach that of a mouse, but it could conceivably get close.

</comment></comment></comment><comment><USER6> This looks great, but I'm a bit worried that this will only bring more people RSI or similar problems.

I think that the future of input devices are our brains and a device that can read what's going on in them and translate that to the computer. We really need to move away from devices that use hands because they simply aren't made for such tasks. The only way I see humans still using hands for computer interaction in the future is if we get prosthetic robot hands like in the Deus Ex game for example.

<comment><USER7> > The only way I see humans still using hands for computer interaction in the > future is if we get prosthetic robot hands like in the Deus Ex game for > example.

If we could access the brain outputs that control the hands, why would we make robot hands and special input devices to be controlled by those hands to control the computers, rather than interface to the computers directly?

<comment><USER6> Well both use cases could be made in parallel. You could have prosthetic hands to replace your lost ones (or to "upgrade" your existing ones) and have a direct link to the computer.

<comment><USER7> Definitely, but they wouldn't use those hands for interaction, as the GP stated.

<comment><USER6> Could be. But it also could be that we would be able to tap into nerves and make artificial hands sooner than a usable interface between the brains and computer (there is a whole set of other problems to solve here). And that would mean that the interface for the computer would stay the same (keyboard, mouse, touch screen, ...) but our hands would be mechanical (and you couldn't get Carpal Tunnel Syndrom since, well, you wouldn't have a carpal tunnel :))

<comment><USER7> What are the other problems? Making a prosthetic arm is a superset of getting inputs from nerves, since you need to do that to make the actual arm. Besides, Microsoft already did that, as this very post indicates.

<comment><USER6> Well for starters you would have to read the signals from the brain, otherwise you are limited to the nerves in your hands. Maybe I wasn't clear enough about what I mean. I was thinking along the lines of thought control, not that you would control a virtual hand, if you will, on the computer. And if you wanted that you would, like I said, have to capture brain activity and develop software that would be able to make sense of your thoughts and translate those thoughts into actions on the computer ... this, to me, is a whole different game.

<comment><USER7> Ah, that might never happen, sadly.

<comment><USER6> Care to elaborate why you think so :) ?

<comment><USER7> Well, it's much, much more complicated to decode the brain's internals than just read its outputs to hands and other peripherals. I'm not _sure_ it won't happen, but it's that much more complicated that it wouldn't surprise me.

<comment><USER6> Well I truly really hope you are wrong :)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> This seems like an interface perfectly suited for Google Glass. I'd rather use this, than voice commands or even worse the button on the glasses.

</comment><comment><USER9> For all the other shit MS gets (I'm thinking of Kinect), at least they are actively trying out new interfaces/inputs. Let's hope they go places.

<comment><USER6> What shit did Microsoft get for Kinect? I was under the impression that it was well received all around.

<comment><USER10> Recent article: Has Kinect failed gamers?

<http://360.mmgn.com/Articles/has-kinect-failed-gamers>

<comment><USER11> While the Kinect was sold to the public as a video gaming peripheral, it was an extremely inexpensive LIDAR with impressive capabilities for the time (2 years ago).

From an economic standpoint, it was most successful in selling a boatload of units. However, from a game enthusiast's view, I see it as a stepping stone to something bigger, like the LEAP.

At this point, the Kinect is dated. The LEAP comes out Q4 of this year and is vastly superior (from what I've seen).</comment></comment></comment></comment>


Pretty but useless cherry blossom tree - <AUTHOR> https://granolashotgun.com/2020/05/03/the-other-pitchforks/ <comment><USER2> This web article could cost a satellite or mobile internet customer _several dollars_ to view. Quality in megabytes, not quantity, please. Take a byte out of I/O crime.

<comment><USER3> "A picture is worth 1000 words", as they say. The photo-essay format of his posts allows him to 'show' more than 'tell'.

Additionally, auto-loading of images can be disabled client-side either with a built-in browser feature or with an extension. That is what I do when I'm on a mobile data connection.

<comment><USER2> Ok.

I don't think a picture of laundry is worth a single god damned word.</comment></comment></comment>


Comparison – R vs. Python: head to head data analysis - <AUTHOR> https://www.dataquest.io/blog/python-vs-r/ <comment><USER2> This is interesting, but not really an R vs. Python comparison. It's an R vs. Pandas/Numpy comparison. For basic (or even advanced) stats, R wins hands down. And it's really hard to beat ggplot. And CRAN is much better for finding other statistical or data analysis packages.

But when you start having to massage the data in the language (database lookups, integrating datasets, more complicated logic), Python is the better "general-purpose" language. It is a pretty steep learning curve to grok the R internal data representations and how things work.

The better part of this comparison, in my opinion, is how to perform similar tasks in each language. It would be more beneficial to have a comparison of here is where Python/Pandas is good, here is where R is better, and how to switch between them. Another way of saying this is figuring out when something is too hard in R and it's time to flip to Python for a while...

<comment><USER3> > And it's really hard to beat ggplot.

To be honest, matplotlib seems a good contender to me ([http://matplotlib.org/](http://matplotlib.org/)).

Also, what's wrong with comparing R to Pandas/Numpy ? They can only be used from within Python, right?

Edit: just realised from another comment that Pandas/Numpy can be accessed from R, too.

<comment><USER4> "matplotlib seems a good contender to me'

I've waxed lyrical about Python all over this thread, but here you have to give the medal to R. Matplotlib is one of my least favourite libraries to use, been doing it for almost 2 years, and I still spend half my time buried in the documentation trying to figure out how I'm supposed to move the legend slightly to the right or whatever.

ggplot probably has slightly less flexibility overall (mpl is monolithic), but for just doing easy things that you need 99% of the time, ggplot is king.

<comment><USER5> There is a gpplot clone in python. Also bokeh is starting to develop a grammar of graphics interface. Then there is seaborn and mbplot. Lots of stuff besides mplotlib

</comment></comment></comment></comment><comment><USER6> R is certainly a unique language, but when it comes to statistics I haven't seen anything else that compares. Often I see this R vs Python comparison being made (not that this particular article has that slant) as a come drink the Python kool-aid; it tastes better.

Yes; Python is a better general purpose language. It is inferior though when it comes specifically to statistical analysis. Personally I don't even try to use R as a general purpose language. I use it for data processing, statistics, and static visualizations. If I want dynamic visualizations I process in R then typically do a hand off to JavaScript and use D3.

Another clear advantage of R is that it is embedded into so many other tools. Ruby, C++, Java, Postgres, SQL Server (2016); I'm sure there are others.

<comment><USER7> > R is certainly a unique language

I'd say R is a _terrible_ language. Its types are just really different from every major programming language, and it's horrible for an experienced programmer to use.

I totally agree that R has fantastic libraries, but I'd like to see people focus on improving libraries for Python rather than sticking with R, which as a language is less well-designed than Python.

[I use R for most of my stats, I also use Matlab and Python]

<comment><USER8> I think you're wrong. R is an excellent language, targeted specifically around the problems you commonly see when doing data analysis. On the whole the standard libraries aren't particularly good, but I think the language is good.

That said, the language is often taught poorly. Here's my attempt to do better: [http://adv-r.had.co.nz](http://adv-r.had.co.nz)

<comment><USER9> Well, time to bring out my favorite dead horse to beat:

       - http://stackoverflow.com/questions/1815606/rscript-determine-path-of-the-executing-script
       - http://stackoverflow.com/questions/3452086/getting-path-of-an-r-script

(where you already commented, so it's not like this is something new...)

I would say that any language that does not have a facility to get the path of the current file, is not 'excellent' under the criteria an experienced programmer would use for assessing it.

Now, I very well know that those criteria are different from what _scientists_ use, but still...

</comment></comment></comment></comment><comment><USER10> R is a wonderful language if you chose to get used to it. I love it. I've even used R in production quality assurance to check for regressions in data (not the statistical regressions). I see countless R posts where people try to compare it to Python to find the one true language for working with data. Article after article, there clearly isn't a winner. People like R and Python for different reasons. I think it's actually quite intuitive to think about everything in terms of vectors with R. I like the functional aspects of R. I wish R was a bit faster but I am pretty sure the people who maintain R are working on that. You can't beat the enormous library that R has.

<comment><USER11> I also LOVE R. Plus the fact that Microsoft and other corporations are supporting R will help more and more. With Hadly Wickham's universe it is a great place to do all your work.

<comment><USER12> Yup. R is supported by MS, Oracle, IBM and others, and companies like Twitter and even the Python shop that is Google use it.

</comment></comment></comment><comment><USER13> I spent a few weeks a few months ago learning R. It's not a bad language, and yes, the plotting is currently second-to-none, at least based on my limited experience with matplotlib and seaborn.

There's scant few articles on going from Python to R...and I think that has given me a lot of reason to hesitate. One of the big assets of R is Hadley Wickham...the amount and variety of work he has contributed is prodigious (not just ggplot2, but everything from data cleaning, web scraping, dev tools, time-handling a la moment.js, and books). But that's not just evidence of how generous and talented Wickham is, but how relatively little dev support there is in R. If something breaks in ggplot2 -- or any of the many libraries he's involved in, he's often the one to respond to the ticket. He's only one person. There are many talented developers in R but it's not quite a deep open-source ecosystem and community yet.

Also word-of-warning: ggplot2 (as of 2014[1]) is in maintenance mode and Wickham is focused on ggvis, which will be a web visualization library. I don't know if there has been much talk about non-Hadley-Wickham people taking over ggplot2 and expanding it...it seems more that people are content to follow him into ggvis, even though a static viz library is still very valuable.

[1] [https://groups.google.com/forum/#!topic/ggplot2/SSxt8B8QLfo/...](https://groups.google.com/forum/#!topic/ggplot2/SSxt8B8QLfo/discussion)

<comment><USER14> Hadley is actively working on ggplot2. In fact, he just tweeted a list of improvements - [https://twitter.com/hadleywickham/status/654283936755904512](https://twitter.com/hadleywickham/status/654283936755904512)

[https://github.com/hadley/ggplot2/blob/master/NEWS.md](https://github.com/hadley/ggplot2/blob/master/NEWS.md)

<comment><USER13> Thanks...I didn't know that (though I had been paying attention to bug fixes)...but my point exactly, he's prodigious, so maybe "maintenance mode" to him is "major features every 3 months instead of 2) :).

Also worth pointing out, he's actively working on a new book for ggplot2, which, AFAICT, he's providing for free (you just have to run the build tools)

[https://github.com/hadley/ggplot2-book](https://github.com/hadley/ggplot2-book)

I think if someone were to run an analysis of Wickham's Github activity, it would produce a freakishly busy chart.

<comment><USER14> Agreed about Hadley's prolific work.

I used to work a lot with R many years ago. I was shocked to find how bad the documentation was, and worse how rude and unfriendly the "community" of grumpy professors was. I shudder to think of the horrible meanness towards beginners asking questions on the mailing list.

I got so fed up I even wrote a book about R data visualisation. But this was all just around the time ggplot2 came out. Unfortunately I stopped using R soon after, but since then Hadley has single-handedly done more good for the language than anyone else.

I don't know what the R community is like now, and whether people like Hadley have made it friendlier, but it's clearly one reason Python is superior.

<comment><USER13> I'm a late arrival to the language and have almost interacted with it exclusively through StackOverflow and Github. I've been astonished at not just how friendly people are, but how quickly I can get a helpful response to even what I feel are pretty esoteric (and dumb) questions...again, one of the problems of coming into R is that, because of the relatively small community, there aren't as many references or easily Googlable answers compared to Python...but getting answers to questions if you ask them is very easy, and I think that's a credit to the community.

On the other hand, there seem to be a lot of useful libraries that haven't been ported over to Github or are otherwise easily accessible beyond CRAN...Many of them probably don't get as much exposure as they would if they were more easily discoverable...and I honestly don't even know where, in those cases, to start the bug reporting/patching process. That's obviously the fault of my being spoiled by Github...but that's kind of the point, there's a bit more friction in contributing to R than you might find in Python/Ruby/etc.

<comment><USER14> Yeah there's a lot more R stuff on SO now than when I was using it. The mailing lists were more active so that's what I had to use to ask for help.

</comment></comment></comment></comment></comment></comment><comment><USER4> This is just a series of incredibly generic operations on an already cleaned dataset in csv format. In reality, you probably need to retrieve and clean the dataset yourself from, say, a database, and you you may well need to do something non-standard with the data, which needs an external library with good documentation. Python is better equipped in both regards. Not to mention, if you're building this into any sort of product rather than just exploring, R is a bad choice. Disclaimer, I learned R before Python, and won't go back.

<comment><USER15> I agree. Once you incorporate the other necessary work and preparation, a well-documented, object oriented language is a better way to go.

<comment><USER16> I have to agree that Python is more powerful, and I am indeed doing more and more in Python. Python was my first language, before R.

However when the dataset is medium sized (i.e.: fits into your computer's memory / 2) R crushes Python ( _and_ Pandas) for the 80% of the time you'll be spending wrangling. The reason is that R is vector-based from the ground up. Pandas does everything that R does, but does it in a less-consistent, grafted- on way, whereas the experienced R person who "thinks vectors" is way ahead of the Python guy before the analysis has even started (i.e., most of the work). I know both really well. I use Python when I want to "get (semi) serious" production wise (I qualify with "semi" because if you're really serious about production, you're probably going to go to Scala).

But when it comes to taking a big chunk of untidy data and bashing it around till it's clean and cube-shaped, will parse, and has no no obvious errors, R is miles ahead of Python. R is where you do your discovering. Python can do it too, but I would estimate the cognitive overhead as double.

By the way, that's why people who "think time series" all day long (i.e., vectors, not objects), and who want to implement their algos, not think CS, will first typically build it in R, which is why CRAN beats Python all the time and every time for off-the-shelf data analysis packages. Data people go to R, computer-people go to Python (schematizing).

R is slow. That's its main problem. And that's saying something when comparing it to Python! But the gem of vector-everything makes it a much more satisfying language than imperative, OO, Python, when it comes to the world of data first, code second.

Finally I'd add that Python 3.x is arguably distancing itself from the pragmatism which data science requires, and 2.x provided, towards a world of CS purity. It's not moving in a direction which is data science friendly. It's moving towards a world of competition with Golang and Javascript, and Java itself.

<comment><USER4> Algo people use R because it's faster, nothing to do with being 'data people'.

I am a data person, and I have to deal with a lot of text in my job. If I had to do it in R, I would quit.

Can you explain why you think it is easier to wrangle data in R? My experience is the opposite.

<comment><USER16> Do you mean they use _Python_ because it's faster? yes sure. But then, just use scala. 10x faster again. With a REPL.

Perhaps I should clarify, I'm talking mainly time series and/or data which is vectorizable. Python is better if you're scraping the web. If there's a lot of if else going on. Ie imperative programming.

R's native functional aspects (all the apply family) and multilevel vector/matrix hierarchical indexing is better built from the ground up for large wrangling of multivariate datasets, in my opinion.

</comment></comment></comment></comment></comment><comment><USER12> The reason I like R - it just makes data exploration and analysis too damn easy.

You've got R Studio, which is one of the best environments ever for exploring data, visualisation, and it manages all your R packages, projects, and version control effortlessly.

Then you've got the plethora of packages - if you're any of the following fields: statistics, finance, economics, bioinformatics, and probably a few others, there's packages that instantly make your life easier.

The environment is perfect for data exploration - it saves all the data in your 'environment', allows you to define multiple environments, and your project can be saved at any point, with all the global data intact.

If I want some extra speed, I can create C++ modules from within R Studio, compile and link them, as easily as simply creating a new R script. Fortran is a tiny bit more work, still easy enough however.

Want multicore or to spread tasks over a cluster? R has built in functions that do that for you. As easy as calling mcapply, parApply, or clusterApply. Heck, you can even write your function in another language, then R handles applying that over however many cores you want.

Want to install and manage packages, update them, create them, etc...? All can be done from R Studio's interface.

Knitr can create markdown/HTML/pdf/MS Word files from R markdown, or you can simply compile everything to a 'notebook' style HTML page.

And all this is done incredibly easily, all from a single package (R Studio) which itself is easy to get and install.

Oh yeah, visualisation, nothing really beats R.

And while there are quirks to the language, for non-programmers this isn't really an obstacle, since they aren't already used to any particular paradigm.

As for Python, I'm sure it's great (I've used it a little), but I really don't see how it can compare. R's entire environment is geared towards data analysis and exploration, towards interfacing with the compiled languages most used for HPC, and running tasks over the hardware you will most likely be using.

</comment><comment><USER17> I like Python better as a language, but Python's libraries take more work to understand and the APIs aren't very unified. R is much more regular and the documentation is better. Even complicated and obscure machine learning tasks have good support in R. _BUT_ the performance for R can be very, very annoying. Assignment is slow as all hell and it can often take work to figure out how to rephrase complicated functions in a way that R can figure out how to do efficiently. I think being much more functional than Python works well for data. I mean the L in LISP stands for list! Visualizations are also easier and more intuitive in R, too, IMO. Especially since half the time you can just wrap some data in "plot" and R will figure our which one it should use.

I think the conclusion of the article is correct. R is more pleasant for mathier type stuff, while Python is the better general-purpose language. If your jobs involves showing people powerpoint presentations of the mathematical analysis you've done,you'd probably want to use R. If, on the other hand, you're prototyping data-driven applications, Python would probably be better.

That said, I really like Julia, but can't justify really diving into it at this point. :\

<comment><USER11> > prototyping data-driven applications, Python would probably be better

I would disagree. Python's libraries are really reimplementing R in Python (Mainly Pandas). I find R to be very flexible and especially in the last 5 years with Hadley Wickham's libraries things are concise and very powerful.

Please look at dplyr and see how this new way fo doing R works. Especially with piping with %>%. [https://cran.rstudio.com/web/packages/dplyr/vignettes/introd...](https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html)

Code in R can look like this beautiful code (If you don't code in R and I would expect anyone can see what is happening) This is why I disagree that prototyping in Python would be better.:

flights %>% group_by(year, month, day) %>%

      select(arr_delay, dep_delay)

      summarise(

        arr = mean(arr_delay, na.rm = TRUE),

        dep = mean(dep_delay, na.rm = TRUE)) %>%

      filter(arr > 30 | dep > 30)

Python has .pipe but I find it strange it goes to the new line before the items.

Python Code: >>> (df.pipe(h)

... .pipe(g, arg1=a)

... .pipe((f, 'arg2'), arg1=a, arg3=c)

... )

<comment><USER18> I find the following Pandas code pretty easy to read:

      (df
       .groupby(['a', 'b', 'c'], as_index=False)
       .agg({'d': sum, 'e': mean, 'f', np.std})
       .assign(g=lambda x: x.a / x.c)
       .query("g > 0.05")
       .merge(df2, on='a'))

There are now methods in pandas to do pretty much anything, so you can chain them together into one easy-to-read manipulation without lots of intermediate variables.

</comment></comment></comment><comment><USER19> If you only have time to learn one language, learn Python, because it's better for non-statistical purposes (I don't think that's very controversial).

If you need cutting-edge or esoteric statistics, use R. If it exists, there is an R implementation, but the major Python packages really only cover the most popular techniques.

If neither of those apply, it's mostly a matter of taste which one you use, and they interact pretty well with each other anyway.

<comment><USER20> R does not mean only esoteric statistics. You have many more utilities in the R packages to diagnose and select models. Fitting a model is like 1% of the work, diagnostic is the more important part and R has much more to offer than Python ever will.

<comment><USER5> Statsmodels has tons of model diagnostic...and there is no R equivalent to Pymc3 (stan has less capability and worse API)

</comment></comment></comment><comment><USER21> I have always considered R the best tool for both simple and complex analytics. But, it should not go unmentioned that the features responsible for R's usability often manifest as poor performance. As a result, I have some experience rewriting the underlying C code in other languages. What one finds under the hood is not often pretty. It would be interesting to see a performance comparison between Python and R.

<comment><USER22> Given that R folks are porting it to the JVM, I guess performance on the R side will improve thanks to Hotspot and Graal/Truffle.

[http://www.renjin.org/](http://www.renjin.org/)

[http://www.oracle.com/technetwork/java/jvmls2013vitek-201352...](http://www.oracle.com/technetwork/java/jvmls2013vitek-2013524.pdf)

Then there is PyPy as well.

I also think they should probably add Julia and Wolfram/Mathematica to these comparisons.

<comment><USER23> I would say they're both as limited as Python, Julia far more so. R's stats packages get ported to Julia faster, though. Mathematica still can't do mixed generalized linear modeling, and no other language (other than SAS and Stata) has a package for analyzing simple effects within them.

<comment><USER22> Thanks for the overview, I don't use them. It is more my language geek side speaking louder. :)

</comment></comment></comment></comment><comment><USER24> The one thing that sometimes gets overlooked when people decide whether to use R or Python is how robust the language and libraries are. I've programmed professionally in both, and R is really bad for production environments. The packages (and even language internals sometimes) break fairly often for certain use cases, and doing regression testing on R is not as easy as Python. If you're doing one-off analyses, R is great -- for anything else I'd recommend Python/Pandas/Scikit.

<comment><USER16> or Scala, Clojure, or indeed C.

R's great strength is _finding_ the interesting bits of the data. Testing the Algo. Doing the R&D basically. Better than Python.

Once that's done, why stop at Python? If your game is production, Python will do it, but others will do it so much better, faster, more efficiently.

<comment><USER25> One nice thing about Python is that you can make a piecewise transition from Python -> C, as it is fairly trivial to wrap C code for use in Python. On the other hand, Java's C interface system JNI is pretty much universally reviled.

<comment><USER26> The same can be said about R. Rcpp makes it super easy for you to drop right into C++ for bits of code that need that level of performance.

</comment></comment></comment></comment><comment><USER27> For R: (1) instead of `sapply(nba, mean, na.rm = TRUE)` use `colMeans(nba, na.rm = TRUE)`. (2) instead of `nba[, c("ast", "fg", "trb")]` use `nba[c("ast", "fg", "trb")]`, (3) instead of `sum(is.na(col)) == 0` use `!anyNA(col)`, (4) instead of `sample(1:nrow(nba), trainRowCount)` use `sample(nrow(nba), trainRowCount)` and (5) instead of tons of code use `library(XML); readHTMLTable(url, stringsAsFactors = FALSE)`

</comment><comment><USER15> The "cheat sheet" comparison between R and Python is helpful. The presentation is well done.

The conclusions state what we already know: Python is object oriented; R is functional.

The __Last Word __appropriately tells us your opinion that Python is stronger in more areas.

</comment><comment><USER16> Python's main problem is that it's moving in a CS direction and not a data science direction.

The "weekend hack" that was Python, a philosophy carried into 2.x, made it a supremely pragmatic language, which the data scientists love. They want to think algorithms and maths. The language must not get in the way.

3.x is wanting to be serious. It wants to take on Golang. Javascript, Java. It wants to be taken seriously. Enterprise and Web. There is nothing in 3.x for data scientists other than the fig leaf of the @ operator. It's more complicated to do simple stuff in 3.x. It's more robust from a theoretical point of view, maybe, but it also imposes a cognitive overhead for those people whose minds are already FULL of their algo problems and just want to get from a -> b as easily as possible, without CS purity or implementation elegance putting up barriers to pragmatism (I give you Unicode v Ascii, print() v print, xrange v range, 01 v 1 (the first is an error in 3.x. Why exactly?), focus on concurrency not raw parallelism, the list goes on).

R wants to get things done, and is _vectors first_. Vectors are what big data typically is all about (if not matrices and tensors). It's an order of magnitude higher dimensionality in the default, canonical data structure. Applies and indexing in R, vector-wise, feels natural. Numpy makes a good effort, but must still operate in a scalar/OO world of its host language, and inconsistencies inevitably creep in, even in Pandas.

As a final point, I'll suggest that R is much closer to the vectorised future, and that even if it is tragically slow, it will train your mind in the first steps towards "thinking parallel".

</comment><comment><USER28> "data analysis" means differently in R and Python. In R, it's all kinds of statistical analyses. In Python, it's basic statistical analysis plus data mining stuff. There are too many statistical analyses only exist in R.

</comment><comment><USER29> I work with biologists. R which seems strange to me they seem to take to. I think some of it is Rstudio the ide, which shows variables in memory on the side bar, you can click to see them. It makes everything really accessible for those that aren't programmers. It seems to replace excel use for generating plots.

I've grown to appreciate R, especially its plotting ability (ggplot).

<comment><USER2> Rstudio is R for a lot of people. I'm a computational biologist in a group. Our PI is trying to get the postdocs to learn R themselves, but it's an uphill battle. I eventually warmed up to it - primarily for the plotting.

But a few weeks back he asked me how to do some kind of data sorting / manipulation in R. My answer was that it was a 10 line Python script and I gave him the code. Alas, he couldn't figure out how to save the script and run it from a command-line.

You can't underestimate at how important Rstudio is to the popularity of R for non-programmers.

</comment></comment><comment><USER30> Language comparisons are equiv. to religion comparisons...you aren't going to find a universal answer or truth, it's an individual/faith sort of thing.

That being said - all the _serious_ math/data people I know love both R and Python...R for the heavy math, Python for the simplicity, glue, and organization.

</comment><comment><USER31> This is not just interesting for comparison but its interesting for people that know R/Python how to go from one to the other.

<comment><USER23> Kind of, but the R code is written a little oddly to my eye.

<comment><USER32> How so? As someone familiar with Python but not R, I've always been hesitant to jump in. This code was very readable and made me think that it might be a far more accessible language than I'd previously assumed.

<comment><USER33> One example in the section titled "Split into training and testing sets" would be to use the createDataPartition() function from the caret package for creating training and testing sets.

He says "In R, there are packages to make sampling simpler, but aren't much more concise than using the built-in sample function" but using caret is more concise.

Added: Later in the section on random forests he says "With R, there are many smaller packages containing individual algorithms, often with inconsistent ways to access them." Which is why you want to use the caret package as it makes accessing many machine learning packages consistent and easy.

</comment></comment></comment></comment><comment><USER34> It would be nice to compare JuliaStats and Clojure based Incanter with Python Pandas/NumPy/SciPy. [http://juliastats.github.io/](http://juliastats.github.io/)

</comment><comment><USER35> Very picky, but beware constantly using "set.seed" throughout your R scripts. Always using the same random number is not necessarily helpful for stats, and makes the R code look a lot trickier than it need be

</comment><comment><USER36> I hope you all know that the people who have invested most in actually building this software care the least about this discussion.

<comment><USER20> I see Hadley Wickham commenting here, so yeah...

<comment><USER13> And now the creator of pandas -- whom you just replied to -- is here. It's officially now a party :)

</comment></comment></comment><comment><USER37> In manufacturing Minitab and JMP are used for data analysis (histograms, control charts, DOE analysis, etc.) They are much easier to use and provide helpful tutorials on the actual analysis.

What features or workflow does R or Pandas/Numpy offer to manufacturing that Minatab & JMP can't?

<comment><USER38> R, Numpy, and Pandas are all FOSS. Probably not much of a practical concern, but it might be preferable in some cases.

I don't know anything about Minitab/JMP scripting myself, but my understanding is that R is generally the most intuitive of all the aforementioned (although that would basically boil down to individual preference).

Here's a review including Minitab and R that might be of interest: [http://www.prostatservices.com/statistical- consulting/articl...](http://www.prostatservices.com/statistical- consulting/articles-of-interest/a-review-of-the-top-five-statistical-software- systems)

</comment></comment><comment><USER39> The comparison is R to Python+pandas.

The equivalent comparison should be R+dplyr to Python+pandas.

Base R is quite verbose and convoluted compared to using dplyr. Likewise data analysis in Python is painful compared to using pandas.

</comment><comment><USER40> The rvest implementation was the main thing that seemed like an R port of the python implementation rather than best use of rvest.

An alternate (simpler) implementation of the rvest web scraping example is at [https://gist.github.com/jimhester/01087e190618cc91a213](https://gist.github.com/jimhester/01087e190618cc91a213)

It would be even simpler but basketball-reference designs it's tables for humans rather than for easy scraping.

<comment><USER11> >seemed like an R port of the python implementation

End of the github for rvest:

Inspirations

        Python: Robobrowser, beautiful soup.

</comment></comment><comment><USER41> Really, syntax "nba.head(1)" is not any more "object-oriented" than "head(nba, 1)" \-- it's just syntax, and the R statement is in fact an application of R's object system (there are several of them).

IMO, R's system is actually more powerful and intuitive -- e.g. it is fairly straightforward to write a generic function dosomething(x,y) that would dispatch specific code depending on classes of both x and y.

<comment><USER42> Single-dispatch generic functions are easy in python too: [https://www.python.org/dev/peps/pep-0443/](https://www.python.org/dev/peps/pep-0443/)

<comment><USER41> That's good to know, thanks :) Although, for single dispatch, the S3 system of R is kinda hard to beat -- you just name your function print.myclass and you are done :)

</comment></comment></comment><comment><USER43> In general, if I have to chose between two languages, one of which was designed specifically for statistics, and one that was more general, I will chose the more general one.

R's value is in the implementation of its libraries but there is no technical reason a really OCD person couldn't implement such high quality of libraries in Python.

</comment><comment><USER44> It would be nice to also have some notes about performance of both the languages for each of the tasks compared. I believe pandas would be faster due to its implementation in C. The last time I checked R was an interpreted language with its interpreter written in R.

<comment><USER8> And like pandas, many of the performance bottlenecks in R have been re-written in C. See dplyr and data.table for packages that solve a similar problem to pandas with similar speed (and for some scenarios they're actually faster!)

<comment><USER44> Looks interesting! Thanks for the information.

</comment></comment></comment><comment><USER45> Caret is a great package for a lot of utility functions and tuning in R. For example, the sampling example can be done using Caret's createDataPartition which maintains the relative distributions of the target classes and is more 'terse'.

        > data(iris)
        > library(caret)
        > data(iris)
        > idx <- caret::createDataPartition(iris$Species, p = 0.7, list = F)
        > summary(iris$Species)
            setosa versicolor  virginica
                50         50         50
        > summary(iris[idx,]$Species)
            setosa versicolor  virginica
                35         35         35

</comment><comment><USER46> IF you do your stuff in R, how do you move it into production? Or do you not need to

<comment><USER12> There are packages for that (web servers and such). Or you can call it from Java/Python/whatever.

Most R tasks that people use exit. Typical data science task is: gather data, apply an operation over said data, analyse results.

</comment></comment><comment><USER47>
      python < world > csv
      R < csv > analysis

</comment><comment><USER48> i tried help my wife who use R in school, only to get quickly lost. also attended ~1 hour R course on university.

to me, R was a waste of time and I really dont understand why its so popular in academia. if you already have some programming knowledge, go with Python + Scipy instead

EDIT: R is even more useless without r studio, [http://www.rstudio.com/](http://www.rstudio.com/). and NO, dont go build a website in R!

<comment><USER49> Maybe you didn't mean it this way, but to me your comment reads as, basically, "I tried R for an hour and didn't immediately grok it, therefore it is a waste of time."

That may not be what you meant, so I haven't downvoted yet, but it doesn't seem to be an attitude that is helpful for the conversation.

<comment><USER48> Thanks for your explanation. It seems my ability to communicate is getting worse every year :-/.

What I meant to say was that I helped my wife during her master thesis (~6 months) with R, in addition to spending an hour in one of the classes.

Her teachers also were novices of both R and Excel, and we had several issues with everything from how R processes csv:s, to just figuring out the proper syntax to have R do what we wanted.

Sorry if my comment wasnt helpful, i was merely attempting to add some reflections from personal experience to the discussion.</comment></comment></comment>