skysight-inc/HackerNews huggingface dataset:
I can appreciate your position, because I mostly write programs that model the physical world. The state is what you care about, and the state changes over time, and you have to solve for the state iteratively-- which means that the transition from state [i] to state [i+1] includes a bunch of intermediate guesses at the state. Furthermore, those state updates take place element by element-- you rarely update an entire vector at once, but rather update one or two elements at a time, based on calculations related to some item in the physical world.

In short, you have a vector of reals that you update over and over, one element at a time. This is simply not an operation that functional programming excels at (there is an idea in the functional programming community that the state of a system, because it is a snapshot in time, never changes, and that therefore it is appropriate to model this as a bunch of immutable vectors that stream along in time-- but in practice I don't find that a very powerful, or useful, abstraction).

So my reaction to functional programming, after reading a couple of articles and books, was "Huh, it's cool, but not that applicable to my work."

I can imagine how this also would be the case in embedded systems programming. My brother designs and builds robotic manufacturing systems, and from my limited experience looking over his shoulder, it sure looks like those systems are all about managing state transitions.

Nevertheless, there are a lot of powerful ideas alive in the functional programming world, and over time these have influenced the way I do things. At the most basic, when I design programs, I try to represent the lowest-level descriptions of physical processes as pure functions-- no globals, all state passed in as immutable arguments, and all results returned as numbers. I do find this style of programming easier to test, and to reason about, and that's one of the primary benefits of FP you hear about.

There are other things, too, like my approach to input and output, and how I think of certain operations as "maps" now, but I think you get the point. In the big picture, I'm scavenging for ideas, rather than adopting an approach wholesale. It's like reading about Extreme Programming, and shifting to test-driven development but not pair programming.

My advice would be, look to adopt FP ideas piecewise, rather than all at once. Look for the small ideas and approaches that will make your programming more clear, or easier to test, or easier to re-apply from one system to another. If you've put in an honest effort to understand FP, and you just don't see how any of it applies to your work, then don't worry about it. There's no need for you to "be convinced" of anything. It's about building up your toolbox of tricks that work for your application domain.
3d printer that prints figures in jello shots
when we are aware of it, we do it.
Bill Gates Funds A Smartphone Battery That Runs On Human Urine
I was lucky to start a small startup which functioned like a 'unicorn' job. It allowed me to work exactly on what I was interested in for 4 years, while making more money than I had been. The only drawback was the amount of time managing advertising.

So, don't leave out 'start a business!'. Surprised to not see that possibility mentioned in the article... This is HN, after all. You don't need an employer to have a job.
Who has Krebs doxxed before exactly? This is the first time I'm hearing about this.
Care to share Chuck Moore talk URL ?
> I'm surprised by the comment that Python 3 removed cmp. Perhaps that's a temporary omission.

Guido and company insist that you can (almost?) always find a way supplying a key function. For better or worse, they decided it was the best way, and going by the Python philosophy they removed anything that isn't the one obvious right way to do it. Perhaps it's available in a library somehow, that's what they did to other things that are unnecessary or useful 99% of the time but may still be 1% of the time.

Similarly, Guido once almost removed lambda, but he faced an insurrection.
How the Amiga version of Putty Squad finally ended up being released
It didn't take a whole lot of critical thinking to figure out what company he was talking about.
That's my personal opinion as well (that working for other people is generally boring), but I don't think it follows for all developers (or all of "the best developers").

What I do think is true is that the best developers you read about online tend to work for themselves. But there's selection bias there: succeeding as an independent (whether as a consultant or building your own product) tends to require a keen sense of self-marketing, and on top of that having online communities to connect with (HN, OSS, etc) is especially appealing when you don't have coworkers in the same office as you to shoot the shit with.
Certainly not the wall. At least this method is relatively quick, primary use is for shock value - to put fear in hearts of your enemies.
Care to explain about LightTable starting special and morphing into the mundane? I've checked out a few versions along the development cycle and I wouldn't say that's the case.

Also, it's not "foobar", but FUBAR: Fucked Up Beyond All Recognition/Reason/Repair.
Stanford Researchers: It Is Trivially Easy to Match Metadata to Real People
Whatever language I am learning next is clearly better. It can't possibly be my fault the last language was to difficult, or too slow. I was just getting started and didn't know how much that last language sucked.

OR

Clearly LISP is the language of the Gods, but sometimes I have to work in C because there isn't a good LISP port for certain embedded systems.

OR

Node.JS is the best because you only have to learn one language, and everyone has to know JavaScript so that makes it the best.

OR

I write everything in Assembly, it takes longer, but it is the purest programming.

OR

I speak Python because that's what Harry Potter speaks and he is the coolest.

OR

PERL is the best because you can do so much in a single line of code.

OR

Objective C is the best because why would you want to develop for anything other than an Apple Device?

OR

RPG was how my grandad did it, and so that's how I'm going to do it.
Multithreaded app server written in PHP
I disagree.

When you work for a company, you get to handle challenges that only come at a certain scale. For example, working just by yourself, you are unlikely to deal with huge distributed systems, or scaling an application to millions of users.

Getting good feedback is critical to improving as a developer. I've learned so much by working with others and picking up on stuff they have done.
I know someone who went from not coding at all to a proffesional dev in 2 years. He got hooked on a programmable game mod at the age of 16, and by the time he graduated high school he was working as a web developer. Never took a CS class in his life, he just got really into it.
The slide deck is accurate -- we usually point people at it when we think they aren't following it.
Side note: I went to high school with Phil (article author) - he is a smart guy.
Oh please.

Plenty of jobs no matter what language have to be rewritten for many different reasons.

The fact is, and that is what you guys seem to have a problem accepting is that PHP is a perfectly reasonable tool for many reasons and for many situations.

Get over it. Make it as easy to get started with your preferred language rather than blaiming PHP.
There's a fine line between being a performance artist and a douchebag.

Other than that, i have no concerns.
Here's the link to paper, if someone wants to take a gander: http://pubs.acs.org/doi/abs/10.1021/bm401580k?journalCode=bo...
> the effects of the pill lasted longer than injected insulin

A non-diabetic might think this was a good thing, but it's more likely to be a serious problem. The actual research article (http://pubs.acs.org/doi/abs/10.1021/bm401580k) is paywalled, so I can't see what its pharmacokinetics are, but I'm not inclined to give the benefit of the doubt; unlike most drugs, insulin needs rapid uptake, precise timing and precise dosing. Even if it did survive the digestive tract, interactions with foods that altered the effective dose, or sped up or slowed absorption, would be likely to sink it in actual use.
I'm sure. And it's paypal. No cards are on file. These are literally credit cards that are stored in file folders (quite an air gap, huh?) and they are typed in MANUALLY in the paypal interface. Nothing is stored with the processor for repeat transactions. This has been going on since the mid 90's and while using other processors as well as even (in another business) at a credit card processing machine where the cards were keyed into that. CVV is not relevant either.
LLPs are not LLCs.
I've been at Netflix for close to 6 years.

Working there, IMHO, is no more demanding than any other company.

There are no bonus', the salary is just raised - the average pay for engineers at Netflix is something like $200k which is fairly competitive to the "total compensation" from other employers.

I might be wrong here, but being treated like an adult, a very liberal vacation policy, and 100% support for anything and everything I need to do my job; are more valuable than what most people consider perks...

And they're certainly not a "uncle scrooge" culture - I've never once had to justify a purchase and as far as I can tell unless you're asking for something odd or fairly expensive (>5k or so) manager approval isn't even needed.

Anyone's experience at Netflix is going to be heavily influenced by their manager, and sadly, Netflix doesn't seem to be much better than any other company at finding or growing good managers.
Wikipedia API for Python version 1.1
He currently works at Dropbox, and it looks like he took his 50% deal with him: "In January 2013 I joined Dropbox. I work on various Dropbox products and have 50% for my Python work, no strings attached" [1]

[1] http://www.python.org/~guido/
East Germany already tried that — you are basically describing the Stasi program of "unofficial collaborators." From The Legacy of Surveillance[0]: "For every 1,000 GDR citizens there were approximately 5.5 state security personnel and another 11 unofficial informers. About 1 in 50 of the country’s adults were working for the Stasi and enabled the ministry to conduct an almost blanket surveillance of society."

The movie The Lives of Others is an acclaimed look at living under such ubiquitous surveillance. Without spoiling the plot, agents bugged apartments, blackmailed family members and tapped phones. Not every citizen was looked at intensely as the characters in the film, but
millions of East Germans made it into the agency's files. Wired reported in 2008 that the Stasi had indexed their records by 5.6 million names. [1] Even people who hadn't been overtly persecuted by the Stasi are often concerned their friends were spying on them. There's concrete evidence of grossly undermined trust, too: The paper I cite above suggests that East Germany's economic problems are partly due to distrust caused by the unofficial collaborators.

[0]: http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1554604

[1] http://www.wired.com/politics/security/magazine/16-02/ff_sta...
There are always tons of warning signs in hindsight. The trick is picking them out beforehand, and not picking out the vast numbers of warning signs that apply to all the other people who aren't going to blow stuff up or start shooting people.

In order to support your case, you need to demonstrate not only that these signs were there, but that the NSA could have picked them out of the vast quantity of data collected if they had applied "profiling", and show this in such a way that also lines up with the fact that they couldn't pick it out without "profiling". You also need to show that "profiling" wouldn't have caused them to miss more attacks than it would discover, due to murderous maniacs coming from all ethnicities and religions.

Your comment about mental health at the end really drives home my point about how stupid our definition of "terrorism" is. If a guy thinks that the government is trying to control his mind with low-frequency radio waves, we just call him crazy, blame the mental health system, and call his action a "shooting". If a guy thinks that the creator of the universe used telepathy to tell him that he should blow up a marathon or shoot up an army base, we call him completely sane but evil and refer to his act as "terrorism".
what is with the paywall?
Good point. Could you please remind us why this hasn't been done yet? Or where done?
Airplanes must be cheaper than I thought, if a classic car and a city apartment comes after an airplane.
Par files are magic...
It is mentioned in the article, near the end:

> One trite suggestion is, Why don't you just start your own company? From talking with friends who have done so, I can confidently say that entrepreneurship is not a unicorn job. You spend the majority of your work days on logistics, errands, coordination, and other overhead that's not at all related to furthering your core dream – but those steps are ultimately necessary for launching your product and succeeding in the marketplace. It's a great gig for some people, but definitely not a unicorn job.
What do you mean, "Letting a corporation run...?" You don't "let" someone run a site they created.
This did happen the other day though: http://www.theguardian.com/media/mediamonkeyblog/2013/dec/18...
For some reason, the "Wahhhh, but they do it toooOoooOo" is what I would expect from these three.
Totally agree on the hardware implementation.

Mutable state has two uses. First, when what you are modelling really has state the varies with time (e.g. real world stuff, UI stuff). Second, as a kind of optimization.

One good reason for learning FP is that you think more clearly about what mutable state you are using and why.

For example, OOP programmers tend to instinctively write

obj.setX(x)
obj.doG()
y = obj.doF()

when it could be done as

y = F(G(x))

They instinctively cache G(x) in case they need it later, even though this never actually happens.
Listen here.

I reacted to the typical criticism made about PHP which we saw again in this thread. The OP was about well written PHP and of course it turns into a PHP is bad.

Well boo freaking hoo.

PHP is a great tool. If you dont like it anymore dont use it. If you fear it will hinder your companies future success even though it seems to serve FB amongst others just fine for a while, dont use it.

But please, please, please, dont confuse your own personal opinion about what is good and bad with the fact that for many people PHP is a great tool.
Getting someone to pay you to work on what you want and how you want is likely to be rarer than a unicorn.

Starting your own business is a much easier path to that and even then you will be pulled in all kinds of directions.

The only case of a unicorn job that did actually spring to mind was the CouchDB founder. This is a very motivational talk by him - http://www.infoq.com/presentations/katz-couchdb-and-me
"Last year, I had four fraudulent transactions appear on my card. I am a very cautious user - Linux on the desktop, seperate user and browser profile for e-shopping etc. This was the first time it happened in over 15 years of extensive online card-use."

As a merchant who frequently gets bogus credit card order over the net I will confirm that nobody seems to particularly care about being notified that we feel it's highly probably that a credit card has been stolen. In other words there isn't a system in place even where a merchant who notices they have a stolen card being used can say "hey you should freeze this card or at least look into it".
Mobile ISPs image recompression
In deference to Betteridge, I'd say no.
Don't the compilers optimize this? I always believed functional programming to be popular among compiler experts because it's easier to write certain optimizations on a program because of it's many properties like state not changing etc. I don't know if this leads to realistically faster programs in real life.
re: friends - I think people are just put off by Patty's "we manage the company like a sports team, not a family" philosophy.
Hypocrisy, sir? You astonish me. Is it hypocrisy to suggest that the punishment for maiming or murder, with the vilest of malice aforethought, should be judicial execution? -- a life, ended quickly and without suffering, for a life irrevocably ruined or destroyed in gory, agonizing horror? I think not!
> Of course if this was Perl it would be even worse.

Sigh. Sadly, it has become fashionable to bring up Perl only to ridicule it even when there is absolutely no context or need.

Take a look at this implementation [1] of doubly linked list in Perl. Tell me how that is worse [2].

Now, I will go back to my corner to being productive using Perl or whatever language I need.

[1] https://metacpan.org/source/LEONT/List-DoubleLinked-0.003/li...

[2] Of course, I have no way of knowing if it is an exact or even close translation of your code, but it does implement doubly linked lists.
I kindof disagree. For example while studying UML, it became more and more apparent to me how legitimate it is to have the word "science" in "Computer Science". Being able to create a high-level framework that is general enough to apply pervasively to IT systems is not a trivial matter, and requires considerable academic effort and creativity. The domain may be different from biology or physics, but the methods of obtaining that"understanding" you mention are strikingly similar (which accounts for the reliability of the results that are delivered).
It's neither "required" nor "neighbors", but consider the ubiquitous command: "If you see something, say something."
AJAX auto refresh HN
Generally valid, but it'd be better to qualify that assessment by saying that "some languages are better than others at certain things."

e.g. for a PHP one could fairly state "it's great if you're new to programming and want to spend a few hours figuring out how to get a web page up and running. But don't spend any more time than that with it, please."

or for JS: "yes it has serious flaws, but overall it's not as bad as you first think, especially if you read Crockford's book. The bigger point is that it's welded to the browser platform for the time being, and most likely will be for quite some time. So if you want to do frontend stuff, you have to at least be OK with it."

You see, it's all about context.
Is the Internet a Mob Without Consequence?
Higher order functions is what made it click for me. Immutability, purity and the other stuff is nice, but certainly not mandatory to use FP.

The reduction in verbosity due to easier ways to approach things is what sold FP to me. Common patterns that I'd write several times in OO are easy to abstract in FP.

Tim Sweeny, of Epic Games (Unreal Engine) says that in their C++ codebase, 90% of loops are functional folds or maps.

I imagine the biggest issue, especially as an embedded programmer, is the lack of excellent optimizing compilers that let you write functional, but still obtain the same performance.
Depends, what is taxed in Italy: profit or revenue?

An italian subsidiary would have to pay its mother company for the services it provides (which is everything, since no user would be serviced from Italy). So the Italian company could easily make 0 (or very few) profit.
I voted for this in the new q becuz I wanted them to get burned
oh yes that's a much better example, thank you.
The weirdness is such that I understand, actually I felt it was, more difficult to comprehend. It's a complete point of view reversal. It ends up a simpler model with lots of quality, but sometimes something different and too simple is the hardest to understand.
Bizarrely, this article is cut off both in the stream version of WSJ and in the direct article link. But, if you go from the Google link, you can see the whole article. Shady behavior on the WSJ's part.

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&c...
Now that's what I would called a tech revolution which should put a badge "Powered by Human" on it -- just like the "Powered by Intel" or "Powered by Linux"
Absolutely, CS is an inter-disciplinary subject.
> The moment Google plays favorites manually is the moment I switch to another search engine.

If you believe this doesn't already happen, then you and I must be using different internets. Simply by being selective in which aspects of SEO gaming they chose to address, in what order, and to what extent, they are making editorial decisions. If you're working in an industry where search results are already dominated by low-level SEO manipulation (say, maybe, music lyrics?), are you expected to stand by and let Google be the arbiter of if and when that issue is addressed?

> why not speed up the process of meeting them in the middle and focus on legit link acquisition and traffic acquisition strategies...

My guess is that will be the very likely outcome of this whole brouhaha. It would also not come as a surprise to me if this was the goal all along - getting Matt Cutts' attention is hard, until you're doing something wrong.

You seem to know a lot about SEO, definitely more than me. But it feels like you are expressing a criticism that presumes that this behavior has been happening, and has been tolerated, for some time.
Fighting piracy isn't what I'm talking about, though, and I think it boosts my last point that you even brought the topic up. It would seem that significant portion of the tech community can't seem to distinguish between the ideas that (a) the norm for recorded music should be that we pay for owning a copy of the recording and (b) we should take an aggressive approach to fighting piracy.

But let's talk about radio broadcasting and tape recorders, because that might actually be an example of where we reached a reasonable equilibrium on this. It was understood that people did use them to get copies of recordings they didn't buy, but everybody learned to live with that, and the norm remained that to legitimately obtain a recording, you bought it.

Software's like that too. Nobody's suggested the time for charging for software of any kind is over, that the end of software development is a service not a product. Some people choose to emphasize services (which is fine), some people choose the product route. Some people do both.

Many who choose the product route do try for some defense against piracy -- it's the lock on the door of your house that you know can be broken with enough effort, but is still a good idea. Everybody knows there's still some piracy anyway, but the norm stays that software publishers can claim the right to have their stuff purchased.

That's what I think we should be going towards for a healthy music industry.
It might, it's not like we've checked many planets or even looked very hard.
Something like "map myints (+ 1)" can be performed in a mutable way, without compromising on functional purity. (So long you're not using the old values afterwards, of course.)

Not all compilers perform such optimizations, but there's no fundamental conflict.

I believe Haskell's GHC compiler has "fusion" which allows it to wrap chains of maps/filters/folds into a single tight loop. That way you keep functional style, but get performance of writing it imperatively.
The problem is not Internet, is the people. Without people, there are no problems. Conclusion: Kill the people.
I wrote a preforking webserver in PHP once [1], it was a lot of fun! Especially since there wasn't really anything apart from FastCGI and mod_php. I have always been wondering why there weren't more PHP webservers written in PHP, maybe because FastCGI and mod_php were just good enough for everybody? Contrast that to the Ruby community, where there are more than a dozen decent webservers, implementing varying concurrency models.

Very interesting project!

[1] https://github.com/lgierth/pint