Stripe's list of prohibited businesses - <AUTHOR> https://stripe.com/us/terms#prohibited-businesses

<comment><USER2> I'm one of Stripe's cofounders.

There are a few reasons businesses end up on our prohibited list: they're full of fraud (get rich quick schemes), legally regulated (guns, drugs), or regulated by card companies (pornography).

In many ways, I'd prefer a world where Stripe's prohibited business list was no more specific than that of a web hosting service, and didn't prohibit anything beyond what's required by law.

However, there's an essential neutrality in the routing of packets that's absent in the routing of dollars: credit card networks are emphatically _not_ neutral about the businesses they support on their rails. As such, no matter what stance we might intrinsically want, the outcome is largely determined by what Visa, MasterCard, etc., seek to enforce.

This might seem unfair, and the techno-libertarian in me finds the enumeration distasteful and arbitrary. On the other hand, the card networks have accomplished something very hard: _billions_ of people are willing to give online businesses access to _arbitrary amounts of money_ , sight unseen. This is an impressive achievement, and they pulled it off in part by minimizing the number of bad businesses that exist on their network. So there's a trade-off.

Tl;dr: though we have some influence, we mostly don't get to set the rules.

<comment><USER3> Do you enjoy being at the mercy of the credit card companies? How hard would it be to remove them from the equation?

<comment><USER4> They're a company that makes it easy to accept credit cards on the web. How can you remove credit card companies from the equation?

<comment><USER5> Some payment companies accept credit cards to reduce signup friction and then try to switch users over to ACH to reduce fees.

<comment><USER6> Doesn't using ACH imply giving a company direct access to your bank account? Credit cards offer all sorts of consumer protections that ACH doesn't have, e.g., the customer can be immediately reimbursed for fraudulent transactions, etc.

Not to mention that credit cards allow people to buy stuff they can't really afford on credit. If you remove that ability, you'll be losing a lot of potential customers.

</comment></comment></comment></comment></comment><comment><USER7> Compare to Braintree (VERY similar):

[1] We are unable to underwrite the following business models: (1) door-to- door sales, (2) offering substantial rebates or special incentives to the Cardholder subsequent to the original purchase, (3) negative response marketing, (4) engaging in deceptive marketing practices, (5) sharing Cardholder's data with another merchant for payment of up-sell or cross-sell product or service, (6) evading Card Network's chargeback monitoring programs, (7) engaging in any form of licensed or unlicensed aggregation or factoring, (8) airlines, (9) tour operator, (10) age restricted products or services, (11) bail bonds, (12) bankruptcy lawyers, (13) bidding fee auctions, (14) collection agencies, (15) chain letters, (16) check cashing, wire transfers or money orders, (17) counterfeit goods or any product or service that infringes upon the copyright, trademark or trade secrets of any third party, (18) currency exchanges or dealers, (19) embassies, foreign consulates or other foreign governments, (20) firms selling business opportunities, investment opportunities, mortgage consulting or reduction, credit counseling, repair or protection or real estate purchases with no money down, (21) credit card and identity theft protection, (22) cruise lines, (23) essay mills, (24) flea markets, (25) drug paraphernalia, (26) extended warranties, (27) fortune tellers, (28) "get rich quick" schemes; (28) gambling (including but not limited to lotteries, Internet gaming, contests, sweepstakes, or offering of prizes as an inducement to purchase goods or services), (29) sports forecasting or odds making, (30) illegal products or services, (31) mail-order brides, (32) marijuana dispensaries and related businesses, (33) money transmitters or money service businesses, (34) multi-level marketing or pyramid schemes, (35) online or other non-face-to-face pharmacies or pharmacy referral services, (36) prepaid phone cards, phone services or cell phones, (37) pseudo pharmaceuticals, (38) quasi-cash or stored value, (39) securities brokers, (40) sexually-oriented or pornographic products or services, (41) shipping or forwarding brokers, (42) substances designed to mimic illegal drugs, (43) telemarketing, (44) timeshares, (45) travel agencies or travel clubs, (46) online or other non-face-to-face tobacco or e-cigarette sales, (47) weapons and munitions (48) virtual currency or credits that can be monetized, re-sold or converted to physical or digital goods or services or otherwise exit the virtual world, (49) personal computer technical support, (50) human hair, fake hair or hair-extensions, (51) selling social media activity, such as Twitter followers, Facebook likes or Youtube views, (52) Telecommunications equipment and telephone sales, or (53) any product, service or activity that is deceptive, unfair, predatory or prohibited by one or more Card Networks.

[https://www.braintreepayments.com/faq](https://www.braintreepayments.com/faq)

<comment><USER8> What's worse with Braintree is that they won't even touch Crowdfunding with a 10ft pole.

</comment></comment><comment><USER9> What is absurd about this? This seems to be a list of things where the law is inconsistent across the various states in the US. Accepting these things would likely place a severe state-by-state oversight and compliance burden on Stripe, for very little actual value. It seems pretty smart to me.

</comment><comment><USER10> I think most of these are reasonable, and I immediately see why they are on the list.

I think I know why this is on there:

"(10) age restricted products or services"

But wouldn't that also apply to every business that has a COPPA disclaimer in its ToS.

<comment><USER9> Even though I said it wasn't absurd, this does seem contradictory since they seem to allow face-to-face tobacco sales, which are certainly age restricted.

<comment><USER11> face to face is CP (card present) . it's far less prone to any sort of fraud and IDs can be checked.

</comment></comment></comment><comment><USER12> The only one on here that strikes me as odd is the prohibition on selling fake hair or hair extensions. I'm curious why that is? I suppose I could see prohibitions on selling human hair, but fake hair seems odd.

<comment><USER13> Arg.. there goes my new startup idea. Foiled again. <rimshot>

Edit: Scrolling down reveals the answer, [https://news.ycombinator.com/item?id=6188918](https://news.ycombinator.com/item?id=6188918)

</comment></comment><comment><USER14> A number of the items on that list are restricted due to legal limitations and/or concerns. There are a multitude of regulations and requirements that one would have to follow to collect payments on behalf of a legal entity for any number of things on that list. It's much easier to just not deal with it.

</comment><comment><USER15> (50) virtual currency that can be monetized, re-sold or converted to physical or digital goods or services or otherwise exit the virtual world

Too bad, indeed.

</comment><comment><USER16> Does someone more versed in the space care to comment? The title seems like link bait, and I'd bet there are some not so absurd reasons for a lot of these.

<comment><USER17> I don't know about a lot of these, but I run a travel startup so I can comment about the travel agencies restriction.

Travel in general is seen as a high risk industry. Try going to a bank for a merchant account, tell them you run a travel company and watch their reaction. They don't really want you as a customer anymore. The risk profile is too high.

There's a couple main reasons for this.

One, there's a higher than normal chargeback rate in travel. Think about this, you get to your destination and find out that the online pictures of your hotel are nothing like reality. You feel like you've been scammed, but the owner refuses to give you a refund. You aren't left with a lot of options. But if you booked with your credit card, you can request a chargeback and go stay some place nicer.

This same idea can be applied to inclement weather, an inferior tour, etc. Your expectations are different than reality, you can't get a refund, so you request a chargeback.

Two, the average transaction size is travel is quite large. If I'm upset with my dinner at a restaurant, I might be out $20. If I'm upset with my hotel on a vacation, I might be out $500-$1,000. That's a big difference. I might be able to live with losing $20, but definitely not $500+. So I go through the hassle of a chargeback since the dollar amount makes it worth it.

Between the two of these reasons, you end up with a high risk industry.

I'd imagine all the other industries that are prohibited have similar risk profiles.

</comment></comment><comment><USER18> Maybe by absurd it means the number of prohibited businesses? Otherwise it just looks Stripe does not to be involved with shady/spammy businesses.

<comment><USER19> I'm not sure these are that spammy:

* personal computer technical support

* travel agencies

* hair-extensions

What all of them is the ability to be a scam, but any business can scam you. Surprised fortune tellers aren't on there.

<comment><USER20> Personal tech support would be a high-chargeback environment with very little way to defend against fraud allegations. Travel agencies sell a product that is to be delivered in a foreign country, which is a scammer's favourite promise. And hair extensions... I guess that must be a high scam market, but I don't know why. Being at the end of the list, I assume it was added after experiencing a lot of issues with that type of business.

<comment><USER21> Travel agencies also sell a product that's often delivered much later, when the agency or a supplier (hotel, airline, etc.) may no longer exist. This increases the risk of chargebacks.

</comment></comment></comment></comment><comment><USER22> Would a service like Listia.com be against their terms of service? Specifically these seem contradicting:

(50) virtual currency that can be monetized, re-sold or converted to physical or digital goods or services or otherwise exit the virtual world

===

(52) selling video game or virtual world credits (unless you are the operator of the video game or virtual world),

</comment><comment><USER23> Funny, maybe, but not absurd, at least not in a way that's Stripe's fault. I'm curious about the hair one. I wouldn't expect selling hair to be a real problem. Is there a story that motivated that restriction? I notice it's also in the list of Braintree's restrictions that toomuchtodo posted.

<comment><USER24> The hair extension biz is chock full of fraudsters. Lots of people passing off synthetic as real hair, etc.

</comment></comment><comment><USER25> And no doubt, like contracts, behind every one of those there is a story ...

</comment><comment><USER26> Does #10 mean vineyards are not allowed to use Stripe?

</comment><comment><USER27> fake hair is only one that stands out.

<comment><USER9> It's an old link, but human hair and very realistic extensions are super valuable, and nearly impossible to trace once stolen. Governments are trying to de-incentivize theft by regulating the secondary market. [http://business.time.com/2011/09/13/now-people-are- stealing-...](http://business.time.com/2011/09/13/now-people-are-stealing- human-hair/)

</comment></comment><comment><USER28> This is totally in line with everything else that comes out of USA these days. Logical and not surprising at all. But it makes me sad.

</comment><comment><USER29> Why is it absurd?

Do you think it's absurdly long? Their agreement in general is much shorter than any single one of the several I had to go through to get a merchant account and CC processing service before.

Is it absurd because you think the business types they mention are silly? Well, they are silly. But people do them.

Is it absurd because you are angry your business is on the list? Well, that's life. I, as a valid business owner who uses Stripe, am very glad Stripe protects their relationships / value / company / customer rep time by refusing to serve illegal or borderline illegal businesses, and those with ridiculously high rates of fraud. Yay!

</comment><comment><USER30> Why does this matter?

</comment><comment><USER31> That's not absurd</comment>


A GitHub repo required for any Elm code - <AUTHOR> https://github.com/elm-lang/elm-make/issues/71 <comment><USER2> That's consistent with other approaches taken by Elm (like ports for FFI). It streamlines things, but sometimes is too restrictive.</comment>


Ask HN: Is the "who wants to be hired?" post still working? - <AUTHOR> Is anybody getting job offers?<p>One may think the "who's hiring" post is by large the most useful / used of the three. <comment><USER2> According to the whoishiring account at [https://news.ycombinator.com/submitted?id=whoishiring](https://news.ycombinator.com/submitted?id=whoishiring), it posts about once a month on the first. Just create a cron job on a personal dev server you use with postfix installed and running and own to email yourself a reminder on the first. I've posted once before but nothing that made me want to change possitions resulted from it.

</comment><comment><USER3> I've reached out to a number of the posters but haven't found someone of the right caliber yet.</comment>


Probabilistic Nondeterministic Programming - <AUTHOR> http://www.victusspiritus.com/2011/03/30/probabilistic-nondeterministic-programming/ <comment><AUTHOR> I've done work for years with estimation theory, and probabilistic estimators, but I never knew there was a field of study dedicated towards language development using statistical methods.

It would be ideal to have a range of introductory documents followed by a great book or two on the subject. Any tips appreciated.</comment>


Python-based Project Euler command line tool - <AUTHOR> https://github.com/iKevinY/EulerPy

<comment><USER3> Including solutions is just a terrible idea. Not only is it discouraged by the maintainer of the site himself [0], it is also just inconsiderate to the community.

The worst thing that could happen to Project Euler is people creating profiles and populating them with answers they didn't come up with, so they can pad their resume or other. Having PE be flooded with profiles that have hundreds of "solved" problems would ruin it for those of us who enjoy the challenge and take pride in their solved count.

When you are publishing large corpuses of answers to Github, your personal site, etc., you make it that much more likely for Project Euler to be ruined in the future.

I get the incentive behind including solutions in your tool, and there are definitely worse things in the world- but it's just not cool and disrespectful to the PE community.

[0]: [http://projecteuler.net/about](http://projecteuler.net/about) \- see penultimate entry

<comment><USER4> The solutions that are stored in the package are only plain answers - <USER2> actual algorithmic solutions to each of the problems. I understand the concern, but in my opinion, if someone had a collection of solutions that were derived specifically from the answers derived from EulerPy, it would likely consist of just `print n`s (which shouldn't be impressive to anyone by any means). I apologize if my project has degraded the integrity of the Project Euler community.

<comment><USER5> Please don't apologize - I absolutely _love_ what you've done here - I'm frequently in situations where I don't have good internet connectivity, but would love to spend time keeping my scripting skills sharp with PE - and now I can. I'd previously scraped the questions off of PE, but could never check my answers until I was back online - but now I can!

Your project is going to have a meaningful, and measurably beneficial impact on my life, and I'd like to say thank you very much for the hard work you've put into this wonderful tool!

<comment><USER4> Thanks for the kind words. It's fantastic to see people making use of my project!

</comment></comment></comment></comment><comment><USER4> Oh wow, didn't think this would get posted to Hacker News. I only submitted a link to /r/learnprogramming and /r/Python since, being my first ever Python project, it seems pretty rudimentary compared to some of the amazing things I see here. I'm glad to see people are liking it (and perhaps more importantly that I didn't make any massive coding mistakes)!

<comment><USER6> I'm equally surprised at seeing my Local Euler being used for something.

<comment><USER4> In retrospect, I probably should have contacted you before using Local Euler in this project. Hopefully you don't mind.

<comment><USER6> Nah, it is cool. I really find this whole thing very amusing from an accidental historical preservation perspective. I do hope the rest of the puzzles can be recovered.

<comment><USER6> Fixed.

</comment></comment></comment></comment></comment><comment><USER7> Having a --cheat option seems like a poor decision. Having easy access to every solution (especially as it exists in a plain text file) harms the experience of struggling through a problem until the correct answer is reached.

<comment><USER4> I considered this, and figured since the solutions are stored by the program anyways, it would make more sense to include the functionality rather than to omit it. Naming the option `--cheat` was an conscious decision to discourage a reliance on it. Then again, if someone really does want to view the solutions rather than work through the problems themselves, I suppose it's their loss anyways.

<comment><USER7> Well, the general upside to googling for an answer is that often when someone is providing you with the numeric solution they are also describing their algorithm and implementation. Having it in plain text right on the local hard drive might be more tempting with fewer benefits.

Potential Solution: store the solutions file in an obfuscated format that is easy to decrypt

<comment><USER8> > the general upside to googling for an answer is that often when someone is > providing you with the numeric solution they are also describing their > algorithm and implementation

Can't this be seen as a downside as well? I'd much rather have an option of first just seeing if I'm eg off by a magnitude, or an iteration -- rather than having my fun ruined by someone showing me the whole solution...

</comment></comment></comment></comment><comment><USER5> Important to note that these are just the first 202 questions, and they don't include any graphical resources.

Some of the PE questions, will probably benefit from the actual images, particularly ones like:

[https://projecteuler.net/problem=252](https://projecteuler.net/problem=252)

<comment><USER4> Hmm, I'll have to keep this in mind when I get to adding problems like this. Time to convert GeoGebra images to ASCII art /s!

</comment></comment><comment><USER9> That's great! Now I can try Project Euler in Python, I've just started learning Python, I'm loving it so far after putting it off for 10 years...

Thanks, keep up the good work!

\- Giancarlos

</comment><comment><USER10> I used Cython and PyOpenCL on some of the problems, but similar idea: [https://github.com/CraigJPerry/project_euler](https://github.com/CraigJPerry/project_euler)

Not sure about the cheat option though, kinda goes against the ethos of the site?

</comment><comment><USER11> Hey Guys, Do you want to try it immediately? I've created a terminal.com snapshot. Feel free to test it and comment! [https://terminal.com/tiny/aEVfrRHg8K](https://terminal.com/tiny/aEVfrRHg8K)

</comment><comment><USER12> I like the idea of downloading the question, and having it placed in the source code file. I myself extract the problem into a comment (although, I use C) before trying to work out the solution, so this could save me valuable seconds. :)</comment>


Effe, a building block for an open source AWS lambda - <AUTHOR> http://redbeardlab.github.io/2016/03/05/effe.html <comment><USER2> The power of Lambda comes from being able to use other AWS services. Lambdas on their own are not very interesting.

A true Lambda alternative, open-source or otherwise, would also have to offer alternatives to DynamoDB, S3, SNS/SQS etc. Without those you're basically reinventing CGI.

<comment><USER3> It's a godsend for me, and I don't use anything else on AWS. The value is that I can run arbitrary programs written in any language, and have it automatically scale up without having to think about VM instances. In my case there's a single (quite complex, cpu intensive) commandline C program that I need to run between zero and hundreds of on demand - I haven't found anything else that lets me do that.

<comment><USER2> Out of curiosity, what does your C program do? I don't imagine yours is a typical use case if you don't use any other services (not even S3?) and when you consider that you're limited to 300 seconds of running time and not more than 100 concurrent executions.

<comment><USER3> I'm going to be purposefully vague to avoid doxxing myself, but it's a lot like the "run" button that compiles the code on the Rust homepage, the difference being that the compiler I'm running is too performance critical to use Emscripten ATM.

</comment></comment></comment></comment><comment><USER4> As someone who's using Lambda in production today (successfully, at relatively high volume), I'd like to suggest that what most would-be Lambda alternatives miss is the _infrastructure_ piece. Talk of lock-in notwithstanding, running your code on Lambda requires minor changes at most (assuming it's already structured as a callback). The real value is not having to manage EC2 boxes via any abstraction other than the Lambda service itself. You set one knob (CPU/RAM). It does the rest. That's the part that adds value for me as a developer and an operator.

</comment><comment><USER5> This looks interesting but the screencast video kind of failed to make the point in my opinion. Take a look at serverless talks or apex intro [https://medium.com/@tjholowaychuk/introducing- apex-800824ffa...](https://medium.com/@tjholowaychuk/introducing- apex-800824ffaa70) for how to prepare a better illustration that proves your point.

> _Isolation is not a real issues today, containers can provide complete > isolation between runtimes and much more._

Most people will not necessarily agree. Containers don't provide complete isolation and from a theoretical standpoint they never will (unless we rewrite the Linux kernel). There have been security vulnerabilities in the past about this and there will be, it's just the way it is. Your argument here should probably be "it's safe for single tenant use" i.e. all the code runs on effe is your company's code.

Also coming back to the video again, I just can't fully understand what this project does, it just looks like a Go web server framework.

<comment><USER6> You could use the same logic to say virtualization isn't safe, but it doesn't stop cloud providers from putting multiple people's VMs on the same instance. Regardless of the technologies you use in your datacenter, there will be vulnerabilities that will need to be found, patched, and fixed.

</comment></comment><comment><USER7> If you're tied to AWS then Lambda is great. If you don't want to be tied to AWS or if you need more control over resource allocation/longer running jobs then that's what all the emerging "container engine" services are for.

</comment><comment><USER8> "Bring to you by RedBeardLab"

I would have someone proof read this for you. It's hard to go through this introduction as it is.

<comment><USER9> Since they are likely non-native English speakers (from Italy), a few grammatical mistakes are forgivable.

</comment></comment><comment><USER10> Is the "Bring to you by RedBeardLab" intentional or something?

</comment><comment><USER11> > In November 2014 AWS Lambda was released and it was nothing short than a > revolution.

still not good enough to be reliable in production, more expensive than running on micro instance or digitalocean.

Lambda needs a serious makeover soon or it risks developer abandonment. It's great to lock yourself in with a cloud provider. That's the only serious benefit you get. You still need to figure out how to scale properly, getting on AWS helps but it's not a plug and play scalable thing.

I've largely abandoned development on Lambda because you have to upload your code every time which is annoying. Not only that, they randomly take 5~10 seconds to respond. Also unhelpful are service error messages with no explanation or help from discussion boards. I was told to purchase their support license.

So it seems like AWS is locking in developers and companies with a non user friendly documentation and arcane hidden pitfalls then leaving them no choice but to purchase support since the cost is cheap (pay to play right?) until you add up the effort of integrating with AWS and the cost of lock-in....

AWS lambda is great for prototyping but it doesn't have the tools or a proper development guideline to utilize it. There doesn't seem to be much enthusiasm from AWS either, and if they pull the plug, well hope you didn't build any mission critical apps on lambda backends because you are going to have some considerable downtime.

<comment><USER4> Can you share some more details about what you're trying to do with us? There's a latency floor when using the API Gateway of about 200 ms, which is unacceptable for a lot of APIs, but other than that we largely haven't been running into the issues you're dealing with. And if Meetup is any indication, AWS seems really invested in Lambda. (In terms of cost, it really would depend on what you're using it for.)

<comment><USER11> well I built a user authentication and it takes 5~6 seconds for a real simple operation. it happens randomly and no way to debug it.

the opacity of being able to peer at what's going on in the backend is a real problem with AWS Lambda. I think that this lack of insight is going to bite down the road. Even now, I'm getting 'service error' with NO EXPLANATION what happened.

<comment><USER7> No offense, but this sounds exactly like the experience I had, and many friends had, before we actually learned how to use the service. If I had to guess, you're using the smallest possible 128MB config and not calling it very often. This presents a maximally-bad first experience for devs by Amazon but is not reflective of how it works once you get some actual utilization happening. All that said I moved to containers on Azure for unrelated reasons. But Lambda works fine (within its obvious architectural restrictions) and they'll hold your hand for a $49/month developer service plan fee.</comment></comment></comment></comment>


Waterfall Isn't Dead - <AUTHOR> http://blog.standupti.me/post/127220134289/waterfall-software-development-isnt-dead <comment><USER2> Thank goodness.

Because all this agile shit just means that developers become very agile in not providing useable information for their documenter team until the product's been released and we start bitching to their CS.</comment>


Democrats Unveil A Bill To Ban Internet Fast Lanes - <AUTHOR> http://www.npr.org/blogs/alltechconsidered/2014/06/17/322914843/senate-dems-unveil-a-bill-to-ban-internet-fast-lanes-net-neutrality

<comment><USER2> I wish I had more faith that any bill protecting net neutrality would have a glimmer of hope.

I'm not sure how much of an effect our voices really will have, but you can share with the FCC your opinions on the proceeding "Protecting and Promoting the Open Internet" (docket 10-127). If anything it feels very cathartic to share your thoughts there.

[http://apps.fcc.gov/ecfs/proceeding/view?name=10-127](http://apps.fcc.gov/ecfs/proceeding/view?name=10-127)</comment>


Zen99 (YC S14) Makes Life Easier for Freelancers with Finance, Insurance Tools - <AUTHOR> http://techcrunch.com/2014/08/15/zen99/

<comment><USER2> Just signed up. I am probably your ideal user. I work 100% on 1099, I buy my own health insurance, and I wouldn't mind paying you if the service was a net gain for me.

My thoughts:

1) The sign up form has a First________Last name field. I thought I would tab from First and land on a hidden Last field because of the gap between the two. Tabbing just moved me down to the next set of fields. If the words First and Last had been closer, I would not have been confused.

2) I cannot type in the date in the New Earning report. It sucks to click 5 times to get to Jan 31, Feb 28 etc.

3) I expected some Q&A about my consulting/tax profile. I file jointly with my wife who is on W2. I expense out things like home-office, cellphone bills etc. I would love to specify these in advance/batch so the tax estimate is more accurate. I don't want to put in every identical phone bill manually.

4) You don't cover Florida for health insurance yet. Understandable for a beta but please don't make this service just for CA/NY.

<comment><USER3> All good points. (1) and (2) are easy fixes. (3) is on the way. And (4) is definitely coming soon - we won't just be for CA/NY.

</comment></comment><comment><USER4> I can honestly say this was the biggest pain for me as a contractor. I decided to go without health insurance and paid the fine for not paying quarterly taxes just because I didn't want to deal with the hassle.

Even though this is a free tool, I would have gladly paid for it to help alleviate those issues.

<comment><USER3> Noted! We're definitely excited to help solve this pain point. Nice to know that users would be willing to pay for it - I think that makes the "free" even more compelling.

</comment></comment><comment><USER5> Yan here, Zen99 CTO. Just wanted to thank everyone for their support over the past few months! I hope this can really help all of my fellow 1099er's out there(Not doing 1099 work anymore, but I did freelance development for a long time).

</comment><comment><USER3> Tristan (CEO) here. Article went out right before we had a few hours of meetings, but I'll be around for the afternoon replying to any feedback!

</comment><comment><USER6> What is with the Zen prefix? Zenefits, ZenPayroll, and now Zen99 - all went through YC and all do benefits/payroll/legal administrivia.

<comment><USER7> In this case I think it's meant to rhyme with "1099" like the IRS form.

<comment><USER3> Spot on.</comment></comment></comment>


StackOverflow.com : the new venture from Joel Spolsky - <AUTHOR> http://www.joelonsoftware.com/items/2008/04/16.html <comment><USER2> What I've always wanted is a unix command that would give me more info (user generated info) on the error that just happened in my shell.

Scenario: I'm compiling something on Leopard and it stops with an error. I type the command "wtf"

ERROR: compile quit because of this reason xxxxxxxxxx

> wtf

It automatically records the output of the error and saves it some web site's database. It can find others with the problem and open a browser to the discussion on that issue. Someone else probably already found a way around it or there's some library i'm missing and someone there has explained what it is.

The 'wtf' command would automatically do that "google search" for me and log my info to help others.

<comment><USER3> Heh, that's great to hear. This is exactly what we're trying to do with <http://bug.gd> and the error sharing database we launched last year. (Along with FF extensions and APIs this year.)

Our long-term plan is to integrate all over the place in software. For example, we have a proof of concept for this we announced at PyCon that does what you're describing inside the Python interactive interpreter: <http://blog.bug.gd/2008/03/29/error_help-for-python-hackers/>

While we're excited from a business perspective for integrating into company's GUI apps, as hackers we're very excited about the potential here for completely changing the dynamic of the open source community.

Imagine if every new user, casual hacker, etc., trying out a new open source tool, could immediately get assistance whenever they ran into an error message. What may have taken 6 hours to get configured (and maybe stopped them) could now be a step-by-step "ah-ha" process for common scenarios.

That's precisely what we want to enable. In addition, most of the open source community doesn't even get very good feedback on how many people run into particular errors and give up entirely. This tool would give them the ability to see that, track errors, and put in their own solutions for when they find out people are running into those.

We have a lot of cool plans for this, and I absolutely love to read other people interested in this same endeavor. We're very keen on hearing more feedback on this.

<comment><USER4> This is really interesting.

Is this inspired at all by what Fred Brooks talks about in the Mythical man Month, where each run of a program had to be recorded, and was public within the project?

No hiding your bugs there...!

</comment></comment></comment><comment><USER5> In my experience most of the pay-for-info sites are MS related, or I should say, are for MS-related-technology. I used to find all kinds of great answers in deja and then google groups, but I think that IRC is sucking up all the latest programmer exchanges. Getting all those logs indexed onto the internet would be of great service to mankind.

<comment><USER3> I think IRSeek is trying to do that. I know they log things in some channcels on on Freenode. e.g.:

<http://www.irseek.com/result.php?keywords=xmlrpclib>

<http://www.irseek.com/result.php?keywords=paul+graham>

</comment></comment><comment><USER6> _sigh_ ... I miss Usenet.

I wouldn't mind seeing a One True Site for technology questions again and sure hope this becomes one.

<comment><USER7> Mod the parent up! For serious discussions, mailing lists and Usenet are far superior to _any_ web forum.

I certainly would not mind reading this site in a newsreader.

<comment><USER8> I think that really depends on how the forum is structured. Usenet suffers from having a horrible signal-to-noise ratio, and while mailing lists aren't bad, they nominally lack googlability and any sort of ranking system.

So, I think the problem isn't that web forums are bad, merely that the interface for using them isn't as good as a newsreader. Might be a good opportunity...

<comment><USER9> I think that the fact that Web forums don't require readers is what contributes to their popularity. They have a low learning curve.

That said, the fact that they tend to have a government of sorts, can be a big advantage. A forum can potentially do away with trolls and encourage intelligent conversation in a way the Usenet cannot.

</comment></comment></comment></comment><comment><USER10> If it's going to be a combination of Wikipedia, anti-experts-exchange, and programming reddit, they should have some feature where, when the answer is determined, all the other crap gets deleted, so that people searching into the site to find the answers sees ONLY the answers. (And related tidbits.) Maybe a certain "answered problems format."

<comment><USER11> Reminds me how when searching for Linux fixes, it is never clear what version they apply for. They might describe some elaborate hacks that have been irrelevant for years, because there are easier ways in newer versions, but it is often impossible to know. I wish I could find only the answers that still apply to my version of Linux.

</comment></comment><comment><USER12> Someone posted a while ago about a website with a similar idea (I guess it was called bugg'd) where you try to get solutions for your bug, and if you couldn't find in there, you'd be encouraged to post the solution you found elsewhere.

<comment><USER3> Thanks for the mention!

That's our service: <http://bug.gd>

Our services focus solely on error messages-- the goal is to make it so no one ever has to solve any error message someone already bypassed.

While we're a solution database, it's not quite the forum as Joel's site sounds like it will be (more like Experts Exchange).

We use error messages as a vector for connecting users with different solutions. This let's us get a little more exact on the possible solutions, but we wouldn't cover typical programing or sysadmin tips/tricks. For example, we're also a Firefox extension, a Python interactive interpreter plugin, and will eventually grow to capture error messages for all sorts of software and help people right away while they use the applications.

</comment></comment><comment><USER13> I'll reserve judgement until I can see it in action, but on the surface the idea of a less spammy Expert's Exchange (I think that bit about the javascript windows is a subtle dig at them, but I can't be sure) could potentially be valuable.

<comment><USER14> Experts Exchange definitely used to do rot13 and for sure do javascript windows. Plus, it's always within a few results on Google. There's no way he can possibly be talking about some other site.

(edit: admittedly this is still speculative)

<comment><USER15> My favorite feature of Experts Exchange? If you scroll down past all the "encoded" comments (which now just say "All comments and solutions are available to Premium Service Members only."), and past the LONG list of topics, what do you find? The unencoded comments with the solutions ;)

Random example: [http://www.experts- exchange.com/Database/Oracle/Q_22765568.h...](http://www.experts- exchange.com/Database/Oracle/Q_22765568.html)

<comment><USER14> There was a time I remember this being true. A few weeks ago I stumbled upon an experts-exchange result and decided to see if it still worked--it didn't. So, I'm guessing this doesnt' always work.

</comment></comment></comment></comment><comment><USER16> The idea is, as others mentioned, is not new. Hopefully someone with traction of Spolsky or Atwood will gain enough momentum to make this viable, useful and keep it on top of google results.

I know I'll attempt to contribute

</comment><comment><USER17> Am I the only one who feels that problem they're trying to solve does not exist? Perhaps I read too many books or perhaps my googling skills are bad ass, but finding information on programming issues _is not hard_ and nothing, and I mean it, beats IRC: simple to use, two-way, ad-free, HTML/JavaScript- free, text-only instant and real-time solution to all your problems.

Yet they want to build a giant sink of answers for technical problems. That sink already exists, it's called Internet: post an answer to any question on millions of message boards, google groups ans sites like news.yc. Internet has has an awesome search facility built-in - people will find what you said.

Search for this on google: _"The author of this, David Beazley"_ and you'll get news.yc page with someone's comment containing those words only 4 (!) hours ago (from this moment as I'm writing this).

Why another site? Sure, they have the blogging powers to hype the hell out of their project, but come on...

<comment><USER10> I think they're going for something a little more definitive. Most of the answers you find online are adequate, but these answers are supposed to be authoritative. If all goes as planned, it would certainly be a benefit to the internet you keep searching on Google, and I think if you're completely honest, you'll remember a few times when you had a really specific problem and you just couldn't find a good enough answer searching Google.

</comment></comment><comment><USER18> Good for him, that's a good idea and his network is good/big enough to make a site like this usable quikly.

</comment><comment><USER19> Its a cool enough idea but what's even more interesting is the extent that 2 behemoths of programming blogs being behind something like this will help it be a success.

<comment><USER20> Exactly. I'm sure Jeff and Joel are both fine programmers, but their audiences, SEO, brands, etc have to be much more valuable. Also, Atwood has shown he can cultivate a large community with his blog comments, and Spolsky has run a pretty good discussion community for years. I think this will turn out well.

(ha - totally unintentional switch from first names to last names)

</comment></comment><comment><USER21> I really hope this works out well.

Joel Spolsky and Jeff Atwood are two of my most respected programming heroes.

<comment><USER22> Really? Has Jeff Atwood ever demonstrated any programming ability? Frankly, I think they're both windbags, not programmers :)

</comment></comment><comment><USER23> Shouldnt the title have been "StacOverflow.com : the new venture from Joel Spolsky and Jeff Atwood"?

</comment><comment><USER24> i have faith that he'll produce a good solution, but the idea itself isn't new, so that might hold it back on the popularity scale.

here's to hoping. i'd love to see a consolidated resource.

</comment><comment><USER25> Great idea. People will do anything for karma.

<comment><USER26> Even post obvious one liner comments with no real substance

<comment><USER27> Yep.</comment></comment></comment>


Linux users file EU complaint against Microsoft - <AUTHOR> http://www.globalpost.com/dispatch/news/thomson-reuters/130326/exclusive-open-software-group-files-complaint-eu-against-micros <comment><USER2> From the article:

        Microsoft's relations with the EU executive have been tense since 2004, when the EU found that the company had abused its market leader position by tying Windows Media Player to the Windows software package.

        But Microsoft broke its 2009 pledge and was fined 561 million euros by the EU Commission on March 6 for failing to offer users a choice of web browser.

I'm no Microsoft fanboi, but, let's put it this way - I develop my own operating system, I develop my own browser, I develop my own media player. And I decide to bundle it/promote it along with an operating system I DESIGNED and DEVELOPED. What the fuck seems to be the problem with that?

I'm not limiting your ability in anyway - You can still install any other browser/media player you like and you can remove the ones I've provided too, just like any other..

Come on dudes, if I don't have the freedom to bundle MY software the way I like, then how is it fair? It's like saying I can't bundle a headphone for an Mp3 player I manufactured and the user should buy what he/she wants.

If I got something wrong here, please enlighten me..

<comment><USER3> stupidity of EU at peaks.. thats it

<comment><USER4> Of course :) <http://en.wikipedia.org/wiki/United_States_v._Microsoft>

</comment></comment></comment><comment><USER5> Besides the previous comment from the EU, there's an article written by Matthew Garrett (developer of the Secure Boot solution at The Linux Foundation) that explains also the big difference between Secure Boot and Restricted Boot.

<http://mjg59.dreamwidth.org/23817.html>

That complaint is not really reasonable and is going nowhere, I think.

<comment><USER6> The Linux Foundation developed their own solution, entirely separate from mine.

</comment></comment><comment><USER7> My comment from another thread posted earlier with the same news that happened to disappear from the front page[1]:

Alright this is getting ridiculous, we aren't living in the 90s anymore and we should be encouraging healthy competition. We now have better alternatives like Macbooks, Chromebooks etc. I can't buy into the reason that Microsoft issued secure boot only to undermine Linux. Infact, Microsoft requires all x86 Windows 8 machines to be able to turn off secure boot and/or add their own keys. This also applies for their own manufactured Surface x86 tablets.

I am really looking forward to something like secure boot. Why? Imagine using Truecrypt to encrypt your entire hard drive with 3 layers encryption, and only to defeated by a pesky 10kb keylogging bootloader malware. So unless someone has an alternative solution to this, I am sticking up for secure boot and the ability to add my own keys.

[1] <https://news.ycombinator.com/item?id=5446148>

</comment><comment><USER8> Which illustrates that, despite what you might think, it's possible to be Linux user _and_ stupid.

</comment><comment><USER9> Wait... Didn't Linus say Secure Boot wasn't a problem and that it was actually a good thing?

Or am I just remembering things wrong?

[http://www.wired.com/wiredenterprise/2012/06/microsoft- windo...](http://www.wired.com/wiredenterprise/2012/06/microsoft- windows8-secure-boot/)

<comment><USER10> Wired is selectively quoting and interpreting. Linus is talking in generalities and unfortunately that means he's missing the specific, immediate problem that a lot of people are going to face.

Secure Boot in itself isn't necessarily a problem, and is a good thing in that it can actually increase security. However, if you don't have the ability to install your own certificate (or get a leaf cert), then it completely prevents you from installing your own OS. If a PC comes with only Microsoft's cert installed, then you can only install Microsoft software.

If the OS refuses to boot when you disable Secure Boot, then you can't dual boot the pre-installed OS, and it takes a lot of effort to get things working again. Plus, you lose Secure Boot for both OS's.

This is all a stupid mess which could have been solved by allowing users to install their own certificates - and I don't mean the Fedora solution of also having their cert installed and then handing Fedora a lot of money for a leaf.

<comment><USER11> >If the OS refuses to boot when you disable Secure Boot, then you can't dual boot the pre-installed OS, and it takes a lot of effort to get things working again.

What? Which OS refuses to boot when you disable Secure Boot?

>This is all a stupid mess which could have been solved by allowing users to install their own certificates

Exactly which UEFI Secure Boot does. Here's a guide.

[http://blog.hansenpartnership.com/owning-your- windows-8-uefi...](http://blog.hansenpartnership.com/owning-your- windows-8-uefi-platform/)

<comment><USER10> > What? Which OS refuses to boot when you disable Secure Boot?

The one which was installed with secure boot enabled. My reading is the OS will prevent forward progress when it notices secure boot was bypassed when it expected it to be on. Never tried this myself - I'm likely misinformed.

> Exactly which UEFI Secure Boot does.

And apparently optional, and not something every machine implements, which was the subject of a LOT of stories a year back. Did this ever get resolved as being mandatory, and/or did all UEFI providers figure it was best practice in the end?

</comment></comment></comment></comment><comment><USER12> Whenever these complaints/lawsuits come up, I always wonder why Apple is never part of them...

<comment> mkr-hn Apple is off in its own hardware and software ecosystem, so the potential for widespread harm is small. Microsoft has clout with the people who make the hardware most people use, so there's considerable potential for damage depending on how Microsoft's will is implemented.

<comment><USER8> Apple has plenty of potential for harm via its iPhone and iPad ranges, both of which are locked down.... However, neither has a monopoly maket share.

<comment><USER13> Exactly!

Why aren't people complaining about Samsung locking their phones? (both carrier locks and locking the root account)

Ok, maybe the best solution is to vote with your wallet. It worked for me :)

</comment></comment></comment></comment><comment><USER14> As an European linux user, I'm not happy about the government meddling in the hardware or software business, even if it is to my perceived benefit. Just stay out of it and let the customers decide.

<comment><USER15> That would be hard, if Microsoft makes arrangement for you not to be able to install anything that's not Windows on any laptop ever. Or even on any non- crappy laptop ever.

<comment><USER14> How? It couldn't possibly pay off everybody.

</comment></comment></comment><comment><USER16> Can someone explain why bricking an infected computer is a good idea?

I might understand it if the boot sequence just gives a warning with information, suggestions and a "Don't warn me again" option, but from what I hear it just makes the machine unusable.

<comment><USER17> Windows 8 is meant to be used by people who don't know much about computers. Thus, the approach they take might not fit skilled users.

Ideally the novice user will take their machine to a clueful technician who will wipe the drives and reinstall the OS, and then offer to set up firewalls and anti virus software.

Unfortunately novice users often do not back up their data so wiping the drive is unpopular.

And there are many technicians who think that malware removal without wiping the drives is acceptable.

</comment></comment><comment><USER11> EU had already previously responded to this and I believe this complaint by a "8000-strong" body is not going to change it.

>The Commission is aware of the Microsoft Windows 8 security requirements. According to these requirements, in order to conform to the Windows 8 certification program, computer manufacturers ('OEMs') have to use Unified Extensible Firmware Interface ('UEFI') secure boot.

>The Commission has at its disposal various legal instruments to ensure that competition is preserved in the markets. The basic provisions are contained in the Treaty on the Functioning of the European Union ('TFEU') in Article 101 and 102 TFEU.

>Whether there is a violation of EU competition rules depends however on a range of factual, legal and economic considerations. The Commission is currently not in possession of evidence suggesting that the Windows 8 security requirements would result in practices in violation of EU competition rules as laid down in Articles 101 and 102 TFEU. In particular, on the basis of the information currently available to the Commission it appears that the OEMs can decide to give the end users the option to disable the UEFI secure boot.

>The Commission will however continue to monitor the market developments so as to ensure that competition and a level playing field are preserved amongst all market players.

From [http://www.europarl.europa.eu/sides/getAllAnswers.do?referen...](http://www.europarl.europa.eu/sides/getAllAnswers.do?reference=E-2012-011084&language=EN)

</comment><comment><AUTHOR> >In its 14-page complaint, Hispalinux said Windows 8 contained an "obstruction mechanism" called UEFI Secure Boot that controls the start-up of the computer and means users must seek keys from Microsoft to install another operating system.

Windows 8 contains no such "obstruction mechanism". It will happily boot even if secure boot is not supported on that machine or if it's disabled. Maybe they're trying to get some free publicity with misleading hyperbole and FUD on this as the EU has already knocked down this kind of complaint before.

<comment><USER18> I get your point, but I think that it's not quite right. If you get a computer with Win 8 pre-installed, it won't boot if you turn off Secure Boot. However, I don't have a Win 8 machine on hand to confirm this.

Of course, if you have the install discs, you could then re-install it with Secure Boot disabled, but that's a significant extra step (and you can only do it if your OEM supplied you with the discs).

<comment><AUTHOR> > If you get a computer with Win 8 pre-installed, it won't boot if you turn > off Secure Boot.

No, that's not true, it will continue to boot. There's just too much misleading information being spread.</comment></comment></comment>


Github experiencing major service outages across all services. - <AUTHOR> http://status.github.com/# <comment><USER2> This is why I love git (and distributed version control systems in general). For the most part a short downtime isn't the end of the world. When it comes back up I'll push my changes and that'll be that.

<comment><USER3> I would point out that both TFS and Mercurial do the same thing (as does ClearCase, but ClearCase is awwwful), but with much less memory consumption on the local PC. Not trying to add snark (I upvoted the above comment), just adding that it's not a GitHub feature.

<comment><USER4> > I would point out that both TFS and Mercurial do the same thing (as does > ClearCase, but ClearCase is awwwful), but with much less memory consumption > on the local PC. Not trying to add snark (I upvoted the above comment), just > adding that it's not a GitHub feature.

Well, no, obviously it's a feature of Distributed Version Control Systems in general.

In fact, that's _probably_ why OP wrote "This is why I love git (and distributed version control systems in general)" and didn't in any way claim it was a feature of GitHub?

And do you have some kind of reference for git being less memory-efficient (are you talking RAM-wise?) vs Mercurial or TFS? On its face its pretty hard to believe; git is pretty light-weight.

<comment><USER3> Git for large projects is not lightweight, nor do they claim to be. In fact, that's the basis of their philosophy - that they store full versions of the files as opposed to just storing the changes because data storage is considered inexpensive. The only time Git uses pointers in when the files have not changed.

I'm certainly not slamming Git for working exactly the way it was intended.

<comment><USER5> I think you may be thinking of a different VCS such as SVN as Git actually just stores the meta data (changes/deltas) and not full versions of the file in each commit.

As an example when you clone a repository, it downloaded it, then in goes through a process of 'Resolving Deltas'. This is it going through the history applying the changes/deltas to the files so that they are up to the most recent revision.

The only files that are added in full are binary files.

Some reading: <http://git-scm.com/book/en/Git-Internals-Packfiles> :)

<comment><USER6> To be fair, it uses the full blob until you pack, which is not immediately and depends on your settings. Large repositories spend a significant amount of effort determining optimum window pack sizes etc to optimise the packing of their history.

So, git can be quite heavy on disk usage, until all the loose objects are packed.

</comment></comment></comment></comment></comment></comment><comment><USER7> I'm amazed at how much this has knocked me on my arse.

I first attempted to redo the README for a service I've just open-sourced, before realising Github is down.

Then, I attempted to fix the company CI server (OOM errors because of Carrierwave needing more than 500MB of memory to run 1 spec in, for some unknown reason), which failed because it couldn't check out the code.

After giving up on that, I attempted to install Graphite to a company server, where I hit another roadblock because the downloads are hosted on Github, and so I had to use Launchpad, which I had an allergic reaction to.

Also, when I was shelling into the server, oh-my-zsh failed to update because, you guessed it, Github was down.

Still, shouts to the ops team in the trenches, we're rooting for you.

<comment><USER8> Your company runs its source revisions through Github without a backup solution? Do you really put all your eggs in a basket you have no control over?

I know that in theory a cloud solution should have a higher uptime than an amateuristic set up private server, but cloud solutions have a certain complexity and coherence that make them very vulnerable to these kinds of 'full failures' where nothing is in your control.

Maybe you should take this time to learn from this, and analyze what you could do to reduce the impact of this failure. For example, you could research what it would take for your company to move to another Git provider, perhaps even on your own server or a VM slice at some cloud provider.

I'm not saying you should drop github, because obviously they have great service, but be realistic about cloud service.

Cloud service is like RAID: it is not a backup.

The way RAID is nice for recovering from errors without downtime, there is a chance something bigger happens and you still lose your data cloud is nice for offering scalability and availability but there's a chance everything goes down and you still can't run your operations.

<comment><USER9> Add up your downtime over a three year period by relying on Git (or gmail, or AWS) versus the cost of trying to engineer some local-backup system, and the downtime associated with that going awry.

Outages happens - as long as we're talking hours a year, pretty much everyone but life-safety systems, critical infrastructure, and payment/high-traffic commerce sites are probably better off just letting third-party cloud vendors manage their systems. Take the downtime and relax.

(Now, if downtime consistently gets into the 10s of hours/year, it's time to look for a new cloud provider. )

<comment><USER10> It's not about downtimes and outages. It's incomprehensible to me how lax businesses are with their backups, especially business where their clients data is everything. Yes, the brave new world of the cloud seems tantalizing, but even there, data can and will be lost. Don't just use only one way / provider / service / mechanism for backing up your data.

A tape / lto backup system doesn't cost the world. Yes, it introduces overhead and maintenance, but I'd rather be safe than sorry.

At my place of work we currently use a lot of virtual servers, hosted by external providers. We use their backup and snapshot mechanisms. But we also pull all data to our local back up server. From there we backup to tape on a daily basis.

<comment><USER11> I do have backups of all my (relevant) GH repos since that's just a "git pull" away and can be automated nicely. But I'd probably be out of luck running my regular CI-process with github down or do a deployment. Both rely on having a public-facing git server - having a backup does not imply that I have a full git server running. I could set one up and administer it, but it's just too much effort given GH uptime.

</comment></comment></comment></comment></comment><comment><USER12> I did a bunch of work on GitHub today just before it went down. Talk about getting lucky.

I'm sure we will all learn a bunch from the post-mortem. These high-profile and very openly discussed failures are always good for learning all kinds of things.

No issues at all on how GitHub is handling it so far. Eager to learn what happened. Hitting refresh on the status page every so often. Better than watching underwater basket-weaving competition at the olympics.

<comment><USER13> I created a new org on GitHub today (through all the unicorns) and was about to push an existing repo to them so we could all start pulling it. Talk about unlucky.

<comment><USER14> The good part is you can do it yourself without GitHub (which, after the downtime, could come into the equation quite easily):

      -- Remote machine, or SSH port forwarded machine --
        > adduser git (you either add pusher/puller's ssh pubkeys to its
          authorized_hosts, or use a shared password)
        > su git
        > cd ~
        > git init --bare myproject.git

      -- Your local repo --
        > git remote add <name> git@aforementionedmachine:myproject.git
        > git push <name>

Setting up a git repo for confidential pushing and pulling is quite easy.

<comment><USER13> Already had the repo up and running elsewhere, thanks. Just needed to do some non-git stuff on github (create a new repo on GH to push it to, add team members, and so on).

I've been doing private DVCS for years (mercurial) but this is my first project that's on git and I've been looking forward to the opportunity to host it on github and see what I've been missing.

</comment></comment></comment></comment><comment><USER15> Well handled, minus the unicorns. Tangentially relevant: I just wish Github offered some sort of an academic plan for students, no private repo means that I cannot use Github at all not because I'm building closed-source software, but because I (obviously) can't put my assignment work for public viewing before the assignment deadline. So I've been using Bitbucket, which is fine and all, but I would have loved to be a part of Github community.

<comment><USER16> If you want free Git hosting, you can DIY with Gitlab [1] if you want a web- based GUI like Github's.

If you prefer command-line usage, I'd recommend Gitolite [2]. It allows you to give people access to git and only git (as opposed to git's built-in system, which requires granting ssh shell access); and it only uses one OS-level user/group regardless of how many people it's managing.

Either of the above solutions are for your compsci professors who are clued-in enough to be comfortable with CLI in general and Git in particular.

If you're trying to give files to technically clueless humanities professors, I'd suggest only using Git privately, to develop your paper or whatever, then using a plain old email attachment, or hosting on an HTTP server, to submit the assignment. Or going _really_ old-school by printing out an old-fashioned dead-tree hardcopy.

Of course, all of these solutions (except email attachments and printouts) require running your own server, which is actually a great learning experience. I'd recommend prgmr.com for hosting; their smallest plans should be able to fit even an undergrad's budget, and you have full root access to your (Xen VM) system, so you can do all kinds of fun and exotic experiments. It's not necessary for basic usage, but you can install any version of any Linux distro, use LVM, even use a custom-compiled kernel or FreeBSD (the only requirement is guest Xen patches). It's great because if you have problems, they give you access to an ssh-based out-of-band console, rebooter, and rescue image so you can fix them yourself. (By contrast, many other hosts require you to make changes through some half-baked web UI that lacks half the tools you need, require you to install only approved distros and only do OS upgrades on an approved schedule, and require you to file tickets with lengthy turnaround times and/or fees in order to do the most routine troubleshooting or maintenance tasks.)

Disclaimer: My only relationship with prgmr.com is that I've been their hosting customer for a long time (and very happy with them given the nonsense I've had to put up with from other hosts, in case you couldn't figure that part out from my above rant).

My only relationship with Gitolite is a project user. (I've created and maintained three small-scale Gitolite installations.)

I haven't used Gitlab, but I've heard good things about it.

[1] <http://news.ycombinator.com/item?id=4957145>

[2] <https://github.com/sitaramc/gitolite>

<comment><USER17> How fitting that one of the links you've posted is unavailable at the moment due to the very downtime that caused this discussion! Evidence of our over- reliance on GitHub in the open source community, perhaps.

<comment><USER16> Here I took it as evidence of Github's generous-to-the-point-of-being- ridiculously-foolish attitude toward their customers: They'll even give free public Git hosting to products that directly compete with their core business at a lower price point (free)!

Even if you Do No Evil (R), some people will still complain about you.

That being said, Git hosting would be better for everyone if Github had a bigger competitor in their niche.

<comment><USER18> > They'll even give free public Git hosting to products that directly compete > with their core business at a lower price point (free)!

unless you are providing paid accounts and expensive enterprise solutions with support, you are not competing with them in any way.

<comment><USER16> > unless you are providing paid accounts and expensive enterprise solutions > with support, you are not competing with them in any way.

Yes, you are. If you _would have_ bought their product (paid Git hosting), but you used somebody else's product instead (Gitolite), then that other product (Gitolite) is competing with Github for your business.

I agree that there is a subset of the market that (a) won't or can't figure out Git hosting on their own, or (b) decides that paying for a Github account will actually be less expensive. But I never said that Gitolite will ever _replace_ Github.

</comment></comment></comment></comment></comment></comment><comment><USER16> It should be pretty far down their list of priorities at this point, but I just noticed the "Exception Percentage" value at <https://status.github.com/graphs/past_day> is saying 483.704%. The fact that they're measuring this in percentages implies the maximum is 100%, but this isn't so.

<comment><USER19> I imagine it was a percent measured against successful responses. The exceptions now far exceed those successful responses. You are correct in saying it should be 100% but people have a habit of scaling beyond it.

<comment><USER16> If this is in fact how they're measuring...I was going to make this post a long rant about how ridiculous it is to measure it in that way, but then I realized that people _do_ sometimes measure probabilities by quoting the win- to-loss or loss-to-win ratio.

This is called "odds" and frequently used in gambling. Usually, though, someone says "4.7 to 1" or "47 to 10" (abbreviated 4.7:1 or 47:10) instead of 470%. Usually the larger number is stated first, and the direction is usually indicated by a word like "favorite" or "longshot." So one would say "Errors seem to be a 4.7:1 favorite today."

It's slightly complicated by the fact that odds can measure one of several things:

A. A probability ratio ("Red" is a slight underdog in the game of roulette [1]; the odds against hitting it are 20:18 since there are 20 non-red spaces and 18 red spaces)

B. A payout ratio ("Red" pays 1:1, meaning the prize if you win this bet is equal to the amount of the bet)

C. The current payout of a paramutuel pool [2]

Odds are seldom used outside of a gambling context.

[1] <http://en.wikipedia.org/wiki/Roulette>

[2] <http://en.wikipedia.org/wiki/Parimutuel_betting>

</comment></comment></comment><comment><USER20> I'm really curious how much longer github can offer so much free service. It's not just git but effectively free web hosting as well, at least for statically served pages.

It seems like it's only a matter of time before something will have to give. Either they'll have to start throttling web serving or cover the site in ads like sourceforge or something

I guess I'd better sign up and start paying ASAP to help be part of the solution

<comment><USER21> Plenty of companies pay GitHub multiple thousands of dollars a year for their services. It's not just personal accounts.

</comment></comment><comment><USER22> What's funny is the extent to which Github is being used as a centralized repository for many projects. I don't just mean for project discovery; the issues and gists and other services aren't replicated as often or easily as the code.

In fact, a lot of services depend on github for various reasons, all of which are probably borked now ...

</comment><comment><AUTHOR> A little bit more info here:

<https://status.github.com/messages>

</comment><comment><USER23> What about a script/service to mirror Bitbucket and Github (or others) through webhooks or etc?

Was just getting my hands on Homebrew after a fresh OS install when i hit the Octobummer :-/

<comment><USER18> .git/config

        [remote "bitbucket"]
    	url = firstname.lastname@example.com:you/repo.git
    	fetch = +refs/heads/*:refs/remotes/bitbucket/*

$ git push bitbucket

//edit after tinco's comment

+refs/heads/ _:refs/remotes/origin/_ -> +refs/heads/ _:refs/remotes/bitbucket/_

<comment><USER8> That snippet overrides your remotes/origin branch with what you pull from bitbucket.

This might not be what you want. Instead you probably should do:

      fetch = +refs/heads/*:refs/remotes/bitbucket/*

Unless you really know what you're doing and are just crazy like that :)

<comment><USER18> I thought he thinks of a push and forget backup, so I didn't care. but yea, you're right.

</comment></comment></comment></comment><comment><USER24> It's easy enough to set up a backup repo so a team can keep collaborating when Github is down, but does anyone have a way to deploy Rails apps with Capistrano+bundler? It's terrible not being able to deploy; sometimes that can be really urgent.

With Cap I can just repoint config/deploy.rb to the backup git repo, but what about bundler?

<comment><USER24> To answer my own question:

        http://stackoverflow.com/questions/8693319/where-can-i-install-gems-from-when-rubygems-org-is-down

Of course if you have private patches of gems with bundler's `:git` option, you'd need to repoint all of those, too (as well as keep them in two places).

It'd be awesome if there was some simpler way, maybe a separate declaration in your Gemfile so that any gems added to your project also get installed on a corporate git server, and then bundler uses that as a fallback if `source` doesn't work.

</comment></comment><comment><USER25> Solution is to self-host your critical files. If you have SSH already on a server (ha!) it is pretty easy:

[http://www.verbosity.ca/hosting-your-own-git-based-shared- re...](http://www.verbosity.ca/hosting-your-own-git-based-shared-repositories- using-ssh)

</comment><comment><USER26> Good.I was starting to miss "Github is down" submissions. Quick let's look for alternatives.

</comment><comment><USER27> I feel like such an uber goober! I was installing a package that relied on a github file, which for obvious reasons failed....little did i realize that that was the problem, all I saw was such and such python error callback....doh!

</comment><comment><USER28> Most of developers in my countries 're using SVN. I don't use SVN at all, and i'm failing to convince my partner that Git is better than SVN, just because i don't believe in hardware stability.

<comment><USER29> What does hardware stability have to do with it?

<comment><USER28> I mean the harddisk or mainboard could go wrong anytime. The Distributed model seems more stable.

</comment></comment></comment><comment><USER30> I never forget to pull before going remote, and today I did, and the one time I actually need github to be up and it's not. But I can't be upset, even if this wasn't my fault, it's github.

</comment><comment><USER31> Interesting: Github Pages is still up (got a blog on there and it doesn't appear to have experienced any outages). Static site generators for the win.

<comment><USER32> Pages was out briefly a couple of hours ago (certainly some repos, anyway)

Seems to be fine now though.

</comment></comment><comment><USER33> I guess Murphy is strong on this one, I was just right in the middle of bringing up new server (to host Rails app). Oh well, I'll go to bed early :D

</comment><comment><USER34> Can't read the clojure 1.5 RC1 release notes. Damn.

Looks like services implemented in terms of github are not reliable (but there was no guarantee of that anyway).

</comment><comment><USER35> It's back now.

</comment><comment><USER36> GitHub outage is now over.

</comment><comment><USER37> I'm curious what actually went wrong.

</comment><comment><USER38> Time to fork github. Bad bad sign that they can't get their operations in order. I guess $100 Million can't buy you uptime...

</comment><comment><USER39> That's a really nice status dashboard, tracking and publicly displaying your 98th% is really cool. On the other hand stuff like this:

"13:17 UTC We are seeing unicorns ..."

Comes off as un-professional at exactly the wrong moment.

<comment><USER40> Likewise - I haven't the slightest idea what "unicorns" are in this context.

<comment><USER13> The github error page is an angry unicorn. Similar to ars technica's moonshark, or twitter's failwhale.

</comment></comment></comment><comment><USER41> And this is why I use Google Code: supports git and is more reliable than Github.

It's a shame that they don't offer a paid service for closed-source software.

<comment><USER33> Where do you live, under a rock? Of course they offer paid service for closed- source software.

<comment><USER42> I'm assuming by "they" he was referring to Google Code. (Wishing that Google Code offered a paid service.)</comment></comment></comment>


The Cult of Apple vs. the Cult of Scientology - <AUTHOR> http://blog.marksweep.com/post/27026289934/the-cult-of-apple-vs-the-cult-of-scientology

<comment><USER2> Sad panda. I thought this was going to be funny.

Instead it's a serious attempt at linking the two, which is a bit like going to google trends and concluding that Christmas trees cause AIDS, because they both trend similarly.

<comment><USER3> I thought it was a serious attempt at contrasting the two. While the article does point out some similarities, it also spends the time to show how Apple diverges from actual cults.

I suspect that you could find similarities between any cohesive organization.</comment></comment>


A New Way To Embed YouTube Videos that Supports HTML5 - <AUTHOR> http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html

<comment><USER2> Unfortunately it doesn't support controlling the player from JS, yet.</comment>


Make CPython segfault in 5 lines of code - <AUTHOR> https://gist.github.com/coolreader18/6dbe0be2ae2192e90e1a809f1624c694 <comment><USER2> (CPython 3)

</comment><comment><USER3> FWIW, this segfaults CPython in 2 lines:

      import ctypes
      ctypes.cast(1, ctypes.py_object)

Interestingly, this works:

      import ctypes, gc
      x = 22
      _id = id(x)
      del x
      gc.collect()
      y = ctypes.cast(_id, ctypes.py_object).value
      assert y == 22

</comment><comment><USER4> Here's the Python bug tracking the issue: [https://bugs.python.org/issue39091](https://bugs.python.org/issue39091)

</comment><comment><USER5> Works fine in PyPy, which is not surprising since the execution model is entirely different.

</comment><comment><USER6> Even some "safe" python libraries can be segfaulted using similar techniques. See for example [https://github.com/pydata/numexpr/issues/323](https://github.com/pydata/numexpr/issues/323) I think this particular bug is even marked 'wont fix'. But I cannot find the bpo at the moment.

</comment><comment><USER7> If # of lines are important, this problem can actually be demonstrated in 1 line:

        for x, x.__new__ in [(__import__('queue').Full, print)]: __import__('glob').iglob(0).throw(x)

<comment><USER8> This doesn't trigger a segfault for me in Python 3.7, just an exception that `print_exception` expects an `Exception`.

Someone commented below the gist with this one-liner:

        (i for i in []).throw(type('E', (BaseException,), dict(__new__=lambda cls, *args: cls))())

I managed to golf it a bit down to this ;):

        n="__new__";(i for i in []).throw(type(n,(IOError,),{n:lambda c,*a:c})())

<comment><USER9> Just one character but replace `[]` with `n` too :)

<comment><USER10> Or save that character by removing the space before `[]` instead (which you can't do if you write `n`).

</comment></comment></comment></comment><comment><USER11> This would not have happened in a language with a proper type system as the type checker would have rejected the program at compile time.

<comment><USER12> > This would not have happened in a language with a proper type system as the > type checker would have rejected the program at compile time.

How about in Rust, then? [0]

Bugs happen in every language. When memory corruption occurs, you can segfault.

[0] [https://users.rust-lang.org/t/rust-guarantees-no- segfaults-w...](https://users.rust-lang.org/t/rust-guarantees-no-segfaults- with-only-safe-code-but-it-segfaults-stack-overflow/4305)

<comment><USER11> I said "a language with a proper type system". Rust is not one such language.

<comment><USER12> You'll need to define "proper type system" then.

At a guess, you want something with dependent types?

Like Idris, or Haskell. You already have a Haskell example. This [0] release of Idris fixed a segfault when concatenating strings.

Maybe you meant a language that is proven from the ground up. Like CakeML. You can find a segfault example here [1].

Maybe you meant a language with an algebraic type system like Ada. You can find a segfault example here [2].

Maybe you meant something like Dotty (Research for the next version of Scala). You can find a segfault example here [3].

In short: You'll need to describe what you believe to be a "proper" type system, and name the languages you think fit that description, or no one can have a conversation with you.

[0] [https://www.idris-lang.org/idris-1-1-1-released/](https://www.idris- lang.org/idris-1-1-1-released/)

[1] [https://github.com/CakeML/cakeml/issues/438](https://github.com/CakeML/cakeml/issues/438)

[2] [https://stackoverflow.com/questions/56227629/segmentation- fa...](https://stackoverflow.com/questions/56227629/segmentation-fault-during- runtime-elaboration-ada)

[3] [https://github.com/lampepfl/dotty/pull/7466/](https://github.com/lampepfl/dotty/pull/7466/)

<comment><USER11> You can trivially prove bottom in Haskell. Something like Agda or Idris would indeed fit the bill better.

Anyway, I said that this specific issue would not occur in a language with dependent types -- where incorrect code would cause the implementation to crash. Not that it is impossible to have a buggy compiler that at certain cases produces segfaults.

<comment><USER12> > Not that it is impossible to have a buggy compiler that at certain cases > produces segfaults.

That's exactly what happened here, however. The instance check was missing from the interpreter.

Dependant types wouldn't have solved the underlying problem.

</comment></comment></comment></comment></comment></comment><comment><USER13> A quick search in bugs.python.org shows several crashes. I don't know much about Python. Is there anything particularly special about this one?

<comment><USER14> Just for fun, here's another one:

      import sys, threading
      def r():
          sys.stdin.buffer.read(1)
      t = threading.Thread(target=r, daemon=True)
      t.start()

<comment><USER15> Here's a Python 2 segfault I ran into recently.

        import sys, threading, time

        t = threading.Thread(target=sys.stdin.read, args=(1,))
        t.start()
        time.sleep(1)
        sys.stdin.close()

Run it then after a few seconds press enter. It doesn't segfault in Python 3, but it still doesn't behave how I'd like, because I would like the close() to unblock the read(), but it doesn't unblock the read(), the read() still hangs until it gets some input.

<comment><USER2> The whole threading library in Python is a mess. Python was designed around single threaded programs with shared-nothing state and the cracks show as you move beyond that. The whole idea of replacing the GIL with... multiple same- process distinct-state Python interpreters with cheap-ish message passing sort of highlights how ugly it gets.

<comment><USER16> Back around python 1.5, there was almost a fork of python where every object had locks, there were memory arenas, and multiprocessing was almost thoughtlessly easy. That and stackless would've been great.

<comment><USER5> It was also terribly slow.

IronPython did that too, on .Net. It ran around one quarter the speed of CPython.

</comment></comment></comment></comment></comment></comment><comment><USER17> Segfaults in scripting languages are remarkably common, especially if arbitrary bytecode can be loaded into the VM.

One I ran into in the wild recently is that in older versions of Lua, exceptions in GC finalizers (the `__gc` metamethod) can trigger a segfault. In those same versions of Lua, the bytecode format is notoriously dangerous to load.

I wonder whether this will be a large component of newer scripting language implementations. Do these safety issues warrant use of memory safe languages like Rust, or use of existing sandboxed VM implementations like WebAssembly?

<comment><USER18> Is anybody fuzzing Python bytecodes? This sounds like a super-great application for afl.

<comment><USER19> It has always been the position of the CPython developers that using python for sandboxing is unsupported. With that in mind it doesn't really matter if you can "exploit" python with weird bytecode because you are supposed to be on the other side of the airtight hatchway[0] anyways.

I don't know what the stance of other python runtimes are, but you should probably just use a sandbox at OS level which is likely to be tested far more thoroughly.

[0]: [https://devblogs.microsoft.com/oldnewthing/20060508-22/?p=31...](https://devblogs.microsoft.com/oldnewthing/20060508-22/?p=31283)

<comment><USER20> It's worth mentioning the interesting failure of pysandbox:

> I now think that putting a sandbox directly in Python cannot be secure. To > build a secure sandbox, the whole Python process must be put in an external > sandbox.

[https://mail.python.org/pipermail/python- dev/2013-November/1...](https://mail.python.org/pipermail/python- dev/2013-November/130132.html)</comment></comment></comment></comment>


Japanese Mobile Gaming Company Gree Buys OpenFeint For $104 Million In Cash - <AUTHOR> http://techcrunch.com/2011/04/21/japanese-company-gree-buys-mobile-social-gaming-platform-openfeint-for-104-million/

<comment><USER2> Someone should do a write up about the history of OpenFeint. It's pretty much a SV Cinderella story now.

2008: Started out as a game developer making the game Aurora Feint

2009: Pivoted to a social game network with Open Feint

2010: Written off by many as Apple announces Game Center

2011: $104M Exit

Kudos to Jason and Danielle.

</comment><comment><USER3> Is anyone able to explain the OpenFeint business model in a nutshell? Are games paying to have OpenFeint support? That doesn't seem likely in this environment. The OpenFeint platform, at least on android, doesn't seem to offer any cross promotion or advertising.

Is it a spyware/marketing intelligence play?

<comment><USER4> OpenFeint cross promote games through their "Free game of the day" model and charge developers for the promotion. It's a standard CPI model.</comment></comment>


Renowned MIT Computer Scientist Richard Stallman Defends Epstein - <AUTHOR> https://www.thedailybeast.com/famed-mit-computer-scientist-richard-stallman-defends-epstein-victims-were-entirely-willing? <comment><USER2> Such a hatchet job. He did not "defend Epstein" in the slightest.

</comment><comment><USER3> Original email from Stallman

The announcement of the Friday event does an injustice to Marvin Minsky:

"deceased AI 'pioneer' Marvin Minsky (who is accused of assaulting one of Epstein's victims [2])"

The injustice is in the word "assaulting". The term "sexual assault" is so vague and slippery that it facilitates accusation inflation: taking claims that someone did X and leading people to think of it as Y, which is much worse than X.

The accusation quoted is a clear example of inflation. The reference reports the claim that Minsky had sex with one of Epstein's harem. (See [https://www.theverge.com/2019/8/9/20798900/marvin-minsky- jef...](https://www.theverge.com/2019/8/9/20798900/marvin-minsky-jeffrey- epstein-sex-trafficking-island-court-records-unsealed.)) Let's presume that was true (I see no reason to disbelieve it).

The word "assaulting" presumes that he applied force or violence, in some unspecified way, but the article itself says no such thing. Only that they had sex.

We can imagine many scenarios, but the most plausible scenario is that she presented herself to him as entirely willing. Assuming she was being coerced by Epstein, he would have had every reason to tell her to conceal that from most of his associates.

I've concluded from various examples of accusation inflation that it is absolutely wrong to use the term "sexual assault" in an accusation.

Whatever conduct you want to criticize, you should describe it with a specific term that avoids moral vagueness about the nature of the criticism.

<comment><USER4> I did not read the article he quotes, and cannot say whether "the most plausible scenario is that she presented herself to him as entirely willing" is true or false, but I agree that you should try to criticize it correctly; if you do not know that it is assault, then perhaps "(who is accused of having sex with one of Epstein's victims)" might be better. Depending on what a article mentioning Minsky would be mainly about, though, such as parenthetical comment might or might not be relevant, I think. In a biography it would be relevant, but not as a parenthetical comment, I should think.

</comment></comment><comment><USER5> This is an extremely provocative title which I hope the mods will swiftly change and/or censure.

I often find myself thinking "Stallman was right!" when it comes to FOSS/privacy but there is a zero-percent chance I will ever defend Epstein's organized, systematic, and continuous abuse of children.

And shame on everyone who refers to him as a "disgraced financier" and his victims as "underage women."

This isn't a pearl-clutching instance of "think of the children" so much as a totally human response based on the litany of evidence that child abuse _ruins lives_ (Google 'Borderline Personality Disorder')

<comment><USER2> Stallman did not defend any of Epstein's acts. He referred to Epstein as a "serial rapist", just not a pedophile.

RMS is a very literal thinker and he lacks tact for sure, but a defender of sexual predators he is not.

</comment></comment><comment><USER6> [https://www.vice.com/en_us/article/9ke3ke/famed-computer- sci...](https://www.vice.com/en_us/article/9ke3ke/famed-computer-scientist- richard-stallman-described-epstein-victims-as-entirely-willing)

The complete Stallman emails cited by this repost-seeming link are at the above link.

</comment><comment><USER7> Woah, those are some extreme views,

Chafing at the idea of a legal age of consent was a favorite theme of his, per his earlier blog posts. In 2003, he said, "I think that everyone age 14 or above ought to take part in sex, though not indiscriminately. (Some people are ready earlier.)"

In 2006, he said it wouldn't so bad for an adult man who worked for the Department of Homeland Security to have sex with a 14-year-old, as one government employee had allegedly propositioned: "Supposing she had voluntarily had sex with him, presuming that they used a condom and suitable contraception, it would have done no harm to either of them."

<comment><USER8> The view is relatively extreme because of constructed social norms, but when I was 14, I had the same view, and it was shared among the peers that I associated with. It would be hypocritical for me to say the points you quoted are abnormal, because in my experience, that's what being 14 was like.

Consensual encounters between underage high school freshman and adult high school seniors are certainly different than a DHS employee, but which one is more "moral" depends on the framework you use to evaluate trust. For example, atleast DHS employees get background checks. And which of those two groups are better known for carrying out school shootings?

My points are: Stallman's _relatively extreme views_ are not _absolutely extreme views_ ; and overall, the amount of gray area in the subject makes it complicated.

<comment><USER4> I wouldn't know about your first two paragraphs, but I can agree about the third paragraph, that "the amount of gray area in the subject makes it complicated". Yes, a lot of stuff becomes complicated because there is a lot of parts, not all of which are being considered (and many that I have not thought of).

</comment></comment></comment><comment><USER9> Original title yes. Clickbait nonetheless.

</comment><comment><USER10> Sauce?</comment>


How to separate your data from your code - <AUTHOR> https://negfeedback.blogspot.com/2019/04/how-to-separate-your-data-from-your-code.html <comment><USER2> Why in the world would you do any of these things as opposed to making your program ask the filename from the user ? You've limited your program to working on exactly one datafile.. If you just ask the user (any way is good, but program arguments required by a long shot), then you allow them to understand the files involved, and you get to run multiple versions of the program against multiple files, to compare their output, or process your data in parallel, or process different sets of data..

Sorry, not buying.

Also, the whole post could have been written as "Don't hardcode filepaths, use a configuration file." but again, that's not what configuration files are for.. If you want to run a program on a specific set of files, you're better off wrapping the invocation in a script.

<comment><USER3> The fact that this article is about jupyter notebooks, and apparently doesn't know that gitignore exists tells me that this is probably written by a data scientist who is in the process of "discovering" solutions to long-solved problems in software development.

<comment><USER4> For a notebook I would ask the user to change a filepath variable in one of the top cells.

But I'm also a stupid data scientist.

What do you propose as the long-solved solution?

<comment><USER5> I'd propose reading data from stdin. Seeing this is about python, one could even consider using fileinput [0] to manage multiple files.

[0]: [https://docs.python.org/3/library/fileinput.html](https://docs.python.org/3/library/fileinput.html)

<comment><USER4> It is a jupyter notebook, not a python script. Your proposal won't work.

You generally don't open a notebook from the commandline, you open it from the notebook file picker inside your browser.

You generally don't "run" a notebook, like you would a script. It is an interactive programming environment.

[https://github.com/jupyter/nbconvert/issues/681](https://github.com/jupyter/nbconvert/issues/681)

</comment></comment></comment></comment></comment><comment><USER6> Even better would be to just use standard input/output. Like so (assuming pandas accepts ordinary file handles for reading and writing CSVs; I have very limited experience with it, and I tend to avoid Python in general):

        #!/usr/bin/env python
        # process-csv.py
        import pandas

        def expensive_operation(data):
            # TODO
            return data

        input_data = pandas.read_csv(sys.stdin)
        results_data = expensive_operation(input_data)
        results_data.to_csv(sys.stdout)

Or maybe even shorter (I think this is valid Python?):

        #!/usr/bin/env python
        import pandas

        def expensive_operation(data):
            # TODO
            return data

        expensive_operation(pandas.read_csv(sys.stdin)).to_csv(sys.stdout)

And then use it like so:

        $ python process-csv.py <input.csv >results.csv

Or like so:

        $ csv-generating-command | python process-csv.py | csv-consuming-command

You could even do a quick

        $ chmod +x process-csv.py

And then call it directly

        $ ./process-csv.py <in.csv >out.csv

Or copy it to somewhere in your $PATH

        $ cp process-csv.py ~/bin/process-csv

At which point you can run from anywhere

        $ cd /literally/anywhere/else/
        $ sudo pip install csvcat  # or something
        $ csvcat *.csv | process-csv >~/Documents/results-201904021616.csv

Of course, we could get even crazier with a custom Pip package or whatever the actual terminology is (egg?) and do all the setup.py and requirements.txt and whatnot that Python packaging entails and yadda yadda yadda, but that's probably overkill for a one-off script. Point is: your fancy Macbook has a full-blown actual UNIX™ on it, so might as well put it to good use :)

<comment><USER7> (author of post)

I am a huge fan of this approach and use it extensively in my own code. This natural commandline interaction is completely alien to my students. They are barely holding on with trying to learn Python in the notebook environment, telling them that the solution to their problem is to learn another language has not woked well for me.

<comment><USER6> Gotcha. Given that Jupyter feels pretty alien to me coming from a command- line-heavy background, I can understand the stubbornness :)

In that case, I'd probably more readily recommend just adding a *.csv line to .gitignore and letting students add/remove files accordingly (unless the lesson is specifically about how configuration files work, of course, in which case by all means your approach is reasonable).

<comment><USER7> Adding the .csv files to .gitignore only avoids the one issue of having checking in data files. How do collaborators ensure they're working on the same data files?

I am aiming to minimise the manual steps involved in running the latest version of the code on the latest version of the input data. With my system you just pull the latest code and run it.

<comment><USER6> You can have that with gitignored local data files, too, though: since git is ignoring the data, a simple "git pull" will indeed ignore what's already in there. Meanwhile, the answer to "How do collaborators ensure they're working on the same data files?" would be "Drag and drop those files into the source repo from whichever means they wanna use to share them.".

Yet another way to skin this particular cat might be to write a script as a drag-and-drop target. I don't think Jupyter supports this, so your students would have to venture beyond it a bit, but your Windows-using students for example can drag files onto actual .py files and those dropped files will show up in sys.argv (I think macOS requires the extra step of using py2app, but that might be a good opportunity for a py2app/py2exe lesson). I'd post sample code like in my other comments, but I'm on my phone at the moment.

</comment></comment></comment></comment></comment><comment><USER8> Isn't this what git lfs[0] sets out to solve?

[0] [https://git-lfs.github.com/](https://git-lfs.github.com/)

</comment><comment><USER9> Jupyter notebooks are really abysmal when it comes to best engineering practices. There's an amazing talk called "I don't like notebooks" by Joel Grus at last years JupyterCon [0]. I highly recommend it.

[0] [https://www.youtube.com/watch?v=7jiPeIFXb6U](https://www.youtube.com/watch?v=7jiPeIFXb6U)

</comment><comment><USER10> There's a difference between data and code?

<comment><USER6> Not everyone uses Lisp ;)

</comment></comment><comment><USER11> The other important question is : when to.

</comment><comment><USER12> Using the input and output characteristics of pure functions, pure functions are used as pipelines. Dataflow is formed by a series of pure functions in series. A dataflow code block as a function, equivalent to an integrated circuit element (or board)。 A complete integrated system is formed by serial or parallel dataflow.

Can also be said, Data and logic are strictly separated, Element level separation of data and logic, data stream processing.

The sea sails by the helmsman and the programming moves toward the data. Initial state, final state, the shortest linear distance between two points. Simplicity is the root of fast, stable and reliable.

[https://github.com/linpengcheng/PurefunctionPipelineDataflow](https://github.com/linpengcheng/PurefunctionPipelineDataflow)

<comment><USER13> The article is about avoiding bloat in SCM repos.

<comment><USER12> I can't connect to this site (blogspot.com), ERR_CONNECTION_TIMED_OUT

So, I can only comment by the title.

<comment><USER4> In that case, please refrain from commenting</comment></comment></comment></comment>


Ask HN: How real is Ageism? - <AUTHOR> I'm a webdev with 10+ years experience with the same company and may need to be looking for a job soon.  Though I've never seen evidence of it, I've heard that ageism is a concern in tech.  Has anyone seen/experienced any sort of ageism with regards to hiring?  Should I make efforts to make myself appear younger when interviewing?<p>EDIT:  A few specifics I forgot to include. I'm in my late 40's and in the north east US. <comment><USER2> I think ageism may be real in some areas of tech, including in some kinds of programming. I think web dev may be one of those areas, but I'm not in that area and I don't actually know.

Here's what it looks like from where I sit: Older people want to get paid more. If you want to get paid more, you have to be worth more. You don't become worth more by working longer hours - you can't compete with the young on that front. Instead, be worth more by creating fewer bugs, by _not_ creating flawed designs, by knowing that something is a bad idea _before_ it's implemented, and so on. Your experience has to show up in value for your employer, or it isn't worth more money.

So if your experience isn't worth more money, and you still want more money, you have trouble getting a job. It's not ageism, exactly (though ageism could result as hiring people internalize the situation).

I said "you have to be worth more money", but that isn't exactly right. You have to be worth more money, _and be able to convince the hiring people that you are worth more money_. If their default assumption is "older people aren't worth it", you've got an uphill struggle.

Web dev itself may be a problem. Is experience worth more than knowing the latest framework? Can you learn that framework faster than the younger people?

> Should I make efforts to make myself appear younger when interviewing?

No.

</comment><comment><USER3> As someone who was in a non-technology role[1] who has interviewed people for technology roles I think ageism in technology is often inadvertent (I've never heard anyone say "Candidate X is too old for this position") and "shows" itself more than other areas because technology moves so fast. As people move up in an organization there is less need to hone their skills. "Old school" investment managers I have worked with still manage to the 60/40 rule. Similarly, a bank I worked for had a CTO who was probably top-notch at server security in the 1990's but completely resisted any SaaS that used AWS because of "security concerns." Instead of learning how to assess whether the way a potential vendor has configured AWS posed any risk to our company he just turned them away. He didn't understand AWS and had no interest in trying to. Because technology advances so quickly the CTO has been let go (resisting AWS is futile) while the 60/40 guy will probably continue to mismanage money for his clients until he decides to retire in the next 2-5 years.

[1] Attorney but also happened to wear Chief Info Security Officer/Chief Privacy Officer hats</comment>