How Google keeps employees by treating them like kids (2006) - <AUTHOR> http://www.aaronsw.com/weblog/googlife <comment><USER2> Funny, my experience is the opposite on literally every concrete assertion about people and motivations.

Looking at my team, and the broader team under my director, only one was hired "straight out of college". Well, if you consider fresh PhDs to be "straight out of college", there are a few, but I doubt Aaron meant folks approaching 30 with kids on the horizon when he was talking about people just out of college.

Perhaps a couple are cynical, but I wouldn't call any childish or enthusiastically adolescent, which isn't too surprising, considering that the median employee within two levels of management of me is mid-thirties with two kids.

We have a couple of visiting scientists (professors at major research universities), and they were surprised by what we're doing, so perhaps the secrecy doesn't do such a bad job of keeping things inside the company after all.

I don't doubt Aaron's experience, but it's exactly what you'd expect due to selection bias. How old was Aaron when he wrote that, 20? He probably wasn't hanging out with the median person from my team. There's nothing wrong with that. But, all things considered, that essay contains a lot of awfully strong assertions.

<comment><USER3> I'm personally aware of a very incapable 22 year old, fresh graduate, who has been hired for north of $200k.

I'm also aware of a whole bunch of other folks who have been variously hired within months of graduation, so I'd wager there's some selection bias from your corner too.

<comment><USER4> Base salary? Unless said 22yr old had done some significant research, had an awesome open source project, is an all star Phd, then I'm temped to call bullshit on this one, and your acquaintance is blowing smoke up your ass. $200k base salary puts you into Level senior staff engineer/director software engineer territory. Most college grads AFAIK are slotted at 3-4 slots slower. You're effectively saying the person your aware of was hired almost as a Director level engineer at age 22. Most high level Google engineers are promoted at this level because of the cross-functional aspects of their experience -- they've taken the lead on several mid to large projects and worked across many Google product areas/teams. Experience impossible to achieve in college.

To give you perspective, I've seen CEO and CTOs of acquired startups in the $50-100 million range can land at mid level engineering levels at Google. If incompetent people with no experience are landing director level jobs @ $200k base salary as a common practice at Google, I want in on this scam!

<comment><USER3> It's a non-engineering role. Don't want to reveal more, as while I'm frankly spitting nails at the hire, I quite like this person.

</comment></comment></comment></comment><comment><USER4> I'm 42. Most of the people I work with are in the 30s and 40s and have children. The stereotype of Google hiring nothing but Stanford grads has been over for a while.

As much as I like Aaron, here he is guilty of excessive generalization. Even in 2006 the claims don't match reality. I lived through the first dot.com boom in CA, where companies were falling hand over fist to offer perks, many of them financially unsustainable, because there was a huge competition to acquire and keep talent, as well as keep them in the office for long hours with the promise of striking it rich on what were often worthless stock options.

Google is pretty clear and upfront about what the compensation will be. Everything I was told about what to expect about stock grants, year bonuses, and benefits, has more or less hit the predicted windows. I was never really oversold on what my compensation would be and I was able to do financial planning around it because it was so transparent.

I also don't see what's wrong with 'infantilizing'. We lose creativity as we become adults because of the sheer numbers of rules, responsibilities, and requirements placed on us. If you want people to do good research or engineering, take away as much as possible impediments, like worry over money, laundry, or corporate politicking.

Do we also talk about Phd students and tenured professors in research labs being "infantilized" by an academic environment often isolated from the outside world? I don't view it as necessarily a bad thing. Although I guess you could claim that Einstein still did good work while working at the Patent Office.

All in all the essay is a rather convoluted and weak critique of Google culture and hiring practices based on anecdotal observations that don't match reality.

<comment><USER5> thanks. I also know people who work at Google who are hired straight of college just like described in the article. Can you or anyone provide us with

1\. actual % of people in different age group working at google.

2\. Please let me know what department you are working in. That might provide some insights.

Occasional Perks is great. However, if the company rely on that to retain its' employees than something rotten.

Google is just a new IBM, Dupon of our time.

I have heard that google will pay employee's family member $2000 every month after their death for 10, 20 years. I think that is great way to make people have great programming skills to stay with the company even if they are not doing anything exciting or creating values for humanities.

<comment><USER4> Even if I had the hard data, I doubt I would be at liberty to disclose them. I work on both infrastructure and on consumer facing apps stuff (like gmail). My role working on the GWT compiler means I interact with dozens of other product teams, so I have a pretty good idea of the average age of people I have to sit in meetings with.

Google used to be a youngish company with a low median average age, I'd say that started to change even as far back as 2005. The demographics of the company are greying.

I don't really stay at Google because of the food or other benefits, I stay because of the people, culture, and products. If it ever becomes a shitty place to work on those grounds, then a startup will start to look much better. Many Googlers have in fact encountered shitty politics within their particular area and left the company eventually.

That is, the idea that Google is not an interesting place to work, but a shitty workplace that needs to "bribe" people to stay because it's so rotten is so far from reality is hilarious. I think Google could drop a lot of the perks tomorrow, and there's be some disgruntled #firstworldproblems people whining, but they'd ultimately stay. As I mentioned and was quoted in this TechCrunch article ([http://techcrunch.com/2012/02/25/sugar- water/](http://techcrunch.com/2012/02/25/sugar-water/)) a lot of the problems that startups "solve" in the Valley are utterly trivial, and if you really want to work on stuff like flying stratospheric balloons, or grand mega-AIs, or whatever Jeff Dean is cooking up next, there aren't many places outside of academia you can flee to.

The perks by and large serve to keep employees happy and undistracted. Happy employees equals happy culture equals higher propensity to work together collaboratively instead of being shit balls to your co-workers because you don't have good healthcare, or must commute outside the office to get crappy subway sandwiches every day.

If you don't think Google is doing anything exciting, or creating value for humanities, than pray-tell, what company in this area that doesn't have great perks, is doing better in those categories?

</comment></comment></comment><comment><USER6> I don't work at Google and from where I sit now, it's hard to imagine myself wanting to work for Google, but this complaint that it's infantalizing its employees is ridiculous. Making your own food and doing your own laundry are not substantial life challenges. Growing up is not about learning to do chores you don't actually have to do. (When you make enough money to pay someone to mow your lawn, are you back to being a little kid?) The whole article is premised on the idea that the status quo in which most adults do have to do (or choose to do) their laundry is somehow intrinsically superior, which is just silly. Think of all the other services you don't do yourself, or even that your grandparents do but which now come in the form of a household appliance. Why do some services go in the bucket labeled "self-sufficiency" and all the other ones don't?

Growing up is also not about throwing out the brightly colored things and getting rid of the spaceship models. Why would you think that? Because someone told you to act like a Real Adult? Because when you grow up, you need to trade in your dinosaurs for responsible abstract art or else...well, what, exactly? Growing up is about taking responsibility for yourself. That's basically it. Maybe Google is preventing that too, but this article doesn't make that case.

<comment><USER7> maximumsteve, your posts show up as dead (meaning no-one without "showdead" turned on can see them). Not sure why, you seem perfectly coherent. I suggest starting a new account.

</comment></comment><comment><USER8> I guess on some level this is true. Is there some place where you can work and get money for doing whatever you want, and defying authority whenever you want? If so, sign me up!

Over in the real world, working for an employer like Google is a risk hedge. If your idea for a project this quarter turns out to not be useful, you don't run out of money and end up living in a cardboard box. You learn from your experience, try again, and your family gets food on the table. You can say it's childish to hedge risk, but you can also say it's very adult to hedge risk. Maybe you _are_ a super genius that can code up a solution to a really hard problem all by yourself. But what if the market doesn't like it? Too bad, you're in the same place as the guy who sits at home all day, smokes pot, and watches daytime TV. The market decided: you suck.

I agree with Aaron that we could always use more computers. Sometimes during peak hours, the batch scheduler will only give me a few hundred machines to run my MapReduce on. What am I, a farmer?

Ultimately, I like working at Google and I like having toys in the office. I have Nerf guns. I use Hakase from Nichijou as my profile picture. At the same time, I feel like I'm doing impactful work, with some very smart people. And I feel that I'm evaluated (and compensated) fairly. Does that make me infantile? Maybe so. But I like it.

My real fear of leaving Google is the time I'll have to spend writing all the infrastructure from scratch. And finding someone else that can afford my hourly rate.

<comment><USER9> >> _At the same time, I feel like I 'm doing impactful work, with some very smart people._

Ah, you must be one of the stars getting people to click on ads, even more. No matter how you spin it, you make money by what can rightfully be characterized as fraud (1,2,3), or confusing ads with unbiased content(if there's still a thing like unbiased content at Google) while ripping your users off. But whatever makes you feel better

1\. [http://tech.fortune.cnn.com/2013/12/18/for-google-it-pays- to...](http://tech.fortune.cnn.com/2013/12/18/for-google-it-pays-to-be-evil- during-the-holidays/) 2\. [http://www.seobook.com/consumer-ad-awareness- search-results](http://www.seobook.com/consumer-ad-awareness-search-results) 3\. [http://www.afr.com/p/technology/google_top_product_search_re...](http://www.afr.com/p/technology/google_top_product_search_results_LyPpxMbp9gwbEsGnCpnn0J)

<comment><USER8> I work on Google Fiber. You give us money, we give you an Internet connection.

I'm glad you made an account just for this, though. What a great community HN can be.

<comment><USER10> > I work on Google Fiber. You give us money, we give you an Internet > connection.

...so that there's a pretty good chance that [you] will use Google Search, and [we] will then show you ads. Also, [we] inadvertently created a channel for analysis on [your] Web browsing habits if [we] were so inclined, which would enable [us] to refine advertising even more, among other things.

If those are not the entire rationale for Google's "everybody should be online" initiatives, like Fiber and Loon, it's at least a significant portion thereof and you know it. Hell, it's probably why the Chromebook exists. You and I are kidding ourselves if we arrive at a conclusion that Google is in any other business than data and advertising impressions. Facebook needs eyeballs, too, hence why Zuckerberg has been on the same warpath.

I didn't make the account just now.

<comment><USER11> The ads are not bad by themselves.

<comment><USER10> I would contend that advertising, marketing, and consumerism are not noble causes for humanity, and engineers who devote their lifespan to enabling such things are wasting their precious allotment of time. Google's revenue driver is putting products in front of eyeballs. Imagine a world in which such a thing was not a market.

Yes, you need awareness of products for people to buy said products. I get that. But no, you don't need to do data analysis on my browsing and search habits to come up with the most effective product to show me to increase the chances of me buying it. Spreading the word about a product is one thing. Treating the human being as a means to a sale, optimizing accordingly, and creating a market for "data" is another. That anybody on planet Earth would consider my shopping habits worthy of purchase just boggles me, and that I am not even consulted in most cases about analysis and sales of such data taking place is just the icing on the cake.

It says something that I pay Comcast $100/month+ for entertainment and I am _still_ shown advertisements for a third (or more) of every hour. I pay for the privilege of being shown new cars. Repeatedly. Black Friday comes to mind, too, as another example of the feedback loop losing control of itself.

To be clear, things are not bad. Our consumer culture is a little bit out of hand, and I'd rather devote my remaining years to producing something of actual value instead of imaginary marketing value. To that end, that Google let me go was in fact a blessing in disguise, and I just hadn't realized it yet.

<comment><USER12> Does your assessment of the value of advertising include the things that are funded by adverts?

That covers almost all print journalism, a lot of full-time internet content creators (from the onion to full time youtube content creators) not to mention Google Search, Gmail, Google Maps, Chrome and Youtube.

If advertising includes everything paid for by adverts, advertising is useful to humanity. If advertising doesn't include everything paid for by adverts, Google isn't only an advertising company.

<comment><USER13> We happen to currently fund some things via ads. But that's an accident of history. If we didn't have ads, there's no reason to think we wouldn't have found another way.

<comment><USER14> There are rather a lot of industries that are all ears for yor alternatives.

<comment><USER13> Now that we have ads, they're hard to get away from. You're removing a problem people notice (having to pay) and causing problems they mostly don't (wasted time, wasted money, suboptimal purchases). This path dependence doesn't make ads good, though.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> A month earlier, Aaron wrote about his experiences working in a more traditional kind of office:

[http://www.aaronsw.com/weblog/officespace](http://www.aaronsw.com/weblog/officespace)

 _> Gray walls, gray desks, gray noise. The first day I showed up here, I simply couldn't take it. By lunch time I had literally locked myself in a bathroom stall and started crying._

So I'm not sure what kind of office would have ever met his approval.

<comment><USER16> This one doesn't look gray: [http://www.businessinsider.com/inside-mozillas- amazing-offic...](http://www.businessinsider.com/inside-mozillas-amazing- office-space-in-san-francisco-2012-3?op=1)

<comment><USER8> This, incidentally, is the same building that Google San Francisco is in.

<comment><USER17> Thank you for saying "incidentally" instead of "ironically." You are one in a million.

<comment><USER8> Ironically, I was wrong about the buildings.

<comment><USER15> Incidentally, I believe the building has ironic columns.

<comment><USER18> dorian, actually.

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> This article always struck me as being composed of two distinctly different opinions. One, Aaron's assertion that employees at Google are being infantilized. Two, that Google's mission and their overall morale and sense of purpose has changed.

Two may be true; I can't speak but anecdotally to this (and nor could he).

But One always struck me as very mean-spirited and unnecessary. As if told by the father in Peter Pan, or Scrooge. As if Google's engineers should be wearing suits (like the "lowlifes" he so despises?) and sitting in Aeron chairs, only, and forgetting about such silly things as dinosaurs and space travel.

<comment><USER20> You do know that one of Aaron's strengths, or at least a point of focus, was gamification. Looking at this article in that light you realize that he was trying to stir up a conversation. He also didn't seem to bother to be nice, at least when he had an opposing opinion.

<comment><USER21> I think the word for that is "trolling." And you're right: the article _does_ make more sense when looked at that way.

<comment><USER22> > I think the word for that is "trolling."

There is a difference between stirring up a conversation you think needs to be had, by simply not beating around the bush in regards to an opinion you actually hold -- and _pretending_ to have an opinion you know to be controversial, just so people waste their energy discussing something you couldn't care less about.

Calling anything you disagree with, or anything written without caring how others might take it, a "troll" is at best mistaken, at worst a nice try.

</comment></comment></comment></comment><comment><USER23> I don't think this is really accurate. It's not about treating people like kids, it's about rejecting the attitude found at dilbert-style corporations.

The T-Rex skeleton and the shark fins are there because they're cool. Google has monorail cars as meeting rooms in the Sydney office [1] - because an engineer requested it. It shows that management listens to employees. It gives people the confidence to propose somewhat outlandish ideas, because if management will buy a monorail because an employee requests it, management will allocate resources to things that actually matter because employees request it. Those stories don't get publicized, but I've seen it happen multiple times.

Also, the idea that all google employees are young kids just out of college who are being shielded from "the real world" by free food and buses is silly, many of my coworkers are married with kids.

[1] [https://plus.google.com/+PaulCowan/posts/Sfm9SpV4eCE](https://plus.google.com/+PaulCowan/posts/Sfm9SpV4eCE)

I work for google, but I'm not speaking on their behalf.

<comment><USER24> The article is from 2006. Things evolve.

<comment><USER25> I was there in 2006. It wasn't accurate then either.

</comment></comment></comment><comment><USER26> Working at Google I feel the opposite of infantilised. I am given nearly total autonomy to do my job how I see fit (and shouldn't i? Nobody knows my job better than me). I can book business travel, order essential equipment, and even start new work spontaneously without wasting time seeking approval. I set my own goals and am the judged by how well I meet them.

I feel that traditional offices are more infantlilising in that they assume most workers need explicit instructions to get their work done and must seek approval to do anything out of the ordinary.

Aaron here is distracted by the shiny things. As an employee you very quickly become accustomed to the benefits and spend more time just getting work done.

</comment><comment><USER27> I thought it looked creepy, like an adult daycare center.

I was approached twice and interviewed twice by Google but I don't think I'd fit that culture.

No offices -- just open spaces.

A meritocracy where you are evaluated by your peers generally, rather than by a boss or customer for your merits in a particular job.

Where you don't even know what you will be working on until you're hired, as if that gives you a choice.

Lots of silly signs hanging, some of which would be trademark violations if displayed in public (Bombay Sapphire, etc.).

Too academic (from Stanford days?) for my tastes.

<comment><USER28> I'm surprised at how polarizing no offices vs open offices is. My first job at IBM, I had an office with two co-workers. They were great, but on days they were out it was sooo isolating. When I quit and took a job at a start up in SF with an open office plan, I _loved_ it immediately. I could look across the room and see if the systems guy was there or getting coffee, instead of pinging into the Sametime void.

So, I'm clearly on the open office side of the camp. What are the main arguments for offices? Peace and quiet and the ability to focus?

<comment><USER29> This is something I've found very weird: there's a _sharp_ difference between the opinions of people I know in person and people online.

HN commenters love to hate open office plans. It's one of the few topics on which they agree with /r/programming!

And yet everywhere I've spent time has been in favor of open offices. This includes a few startups, sure, but also an enterprise software company (Guidewire), an academic research lab (Berkeley ParLab) and a quantitative trading firm (Jane Street).

In the ParLab, even most professors didn't have dedicated offices--apparently, this makes them more accessible and gets them to talk to their students more. David Patterson, the leader of the lab--with _a lot_ of research experience-- talked about how switching to an open layout was a real improvement in the research process.

At JSC, both traders and developers share an open space. This makes communication between the two parts of the company much more fluid. The founders of the firm all originally came from another firm where developers and traders were sequestered from each other, and they have found the shared open space to be entirely preferable.

Many of the other experienced people I've worked with have also been big fans of open office layouts. And these are some of the most productive organizations I've ever seen--probably some of the best full stop.

And yet most online commenters treat it as a given that an open space is completely inferior to real offices.

Personally, I'm a big fan of working in a nice open layout. It makes it much easier to talk to other people, even if I don't have a specific problem to solve. This makes work both more pleasant _and_ more efficient because I can get outside input or an extra set of eyes at any point in the development process. Moreover, since I'm similarly helping other people out, I get a good sense of their projects as well.

And if I need to concentrate, I can just put on headphones or go to a quiet room. But I much prefer that not to be the default action, only taken when it's needed.

<comment><USER30> I wonder how many of those people ever had their own office. If you don't know any better, what you have may seem pretty good.

Both have their advantages and disadvantages. For some types of problem solving, a closed space to think for an extended period of time is really useful.

<comment><USER31> > I wonder how many of those people ever had their own office. If you don't > know any better, what you have may seem pretty good.

Coach never felt cramped until I was back there after the first time flying business class. Spoiled for life. If there is some second transition to travel satori -- where mountains are mountains and coach is no longer cramped -- I haven't attained it yet.

For people writing code, there needs to be _some_ way to indicate "I am in the cave, do not disturb unless truly urgent". The most-obvious way is a door that closes. I imagine it can work other ways in other environments.

<comment><USER32> I used to have my own office and closing the door just meant people would knock on my door instead of popping their head in. Headphones and setting myself to busy on IM has always been the best way of indicating to someone I was busy.

</comment></comment></comment></comment></comment></comment><comment><USER33> Right after college, I was enticed by these perks: free food, laundry services, etc. After a few years in industry, I became more interested in the less sexy but more substantive benefits like a competitive salary, a 401K and good medical coverage.

College-like perks and grown-up perks are not always mutually exclusive. My understanding is that Google pays developers well and offers great benefits.

However, my experience has been that some tech companies emphasize their college-like benefits in lieu of providing strong adult benefits. "Stock options? Who needs stock options when you have beanbag chairs?"

If a company is going to play up its college-like perks, it should also bring to the table substantive financial and health-related benefits. Otherwise I can see how it would be difficult to retain young developers as their priorities change.

<comment><USER34> _" Stock options? Who needs stock options when you have beanbag chairs?"_

If I want a beanbag chair at my desk, I'll buy myself a beanbag chair, thankyouverymuch. :)

<comment><USER35> Or both, or the company allows employees to reimburse their own ergonomic chair purchase. I actually prefer the latter if I can't find one I like from whatever the office provides.

</comment></comment></comment><comment><USER36> You can't judge infantile behaviour from the presence of dinosaurs. I'm a woman in my mid 20s, I still have a fluffy snake from when I was 12 that I like to stroke when I'm thinking.

Oh no! People derive pleasure from things you no-longer do.

There's a difference between being mature and being solemn. Far too often I see the latter being treated as the former. Being mature is about responsibility, managing your own life, growing to understand what you enjoy and how you relate to others. A lot of people who think they're very adult, just because they don't have fluffy snakes and the like any more... a lot of them I don't see as adults; who've thought about their happiness and responsibilities; I see _sad_ teenagers.

</comment><comment><USER37> Creatives (designers, engineers, etc.) with optionality (at the caliber that Google would hire) pine for freelance-like working conditions (not referring to pay, but rather creative control, flexible hours, and amenities). These tech firms try to absorb as many of those benefits as possible to woo over employees. In Google's early days, maybe employees had greater creative control over their projects-- hence creating more autonomous and creative working conditions. However, as a company scales, you inevitably lose your creative control and become a cog in the larger machine. No perks can veil this, hence the changing of Googlers' mentalities.

Unless you're at the top of one of these large firms, I have a really hard time imagining any creative and truly autonomous person willing to work for more than a year at any of these institutions before breaking free and either founding a startup, joining an early stage startup, or freelancing.

</comment><comment><USER38> Who maintains/pays for the site now? I tried going to the top page, expecting some kind of obituary or explanation as to why the site is still up, but the blurb there makes it sound like Aaron stepped out for a week and will be updating again soon, except for the last updated note in the corner.

I did a whois lookup out of curiosity, but the contact information all refers to contactprivacy.com, which is apparently set up to allow people to register domains privately.

<comment><USER39> Pretty sure Sean B. Palmer is taking care of it (or at least has taken care of it so far)

<comment><USER38> Looks like you're probably right. I googled him and found [http://inamidst.com/sbp/](http://inamidst.com/sbp/), which says "I'm taking care of Aaron's sites and data, so email me if you have any queries about that."

I initially wondered about it because it was actually really disturbing when I considered the fungible nature of websites and the possibility of someone posting "past articles" as Aaron.

</comment></comment></comment><comment><USER40> Google is a mammoth. Generalising it would be similar to doing the same of a whole country. I do not work there but know many that have that speak so highly of its foundations. Like some sort of new form of knowledge discovery and expansion of thought. While it may be infantile this could just as well be seen as an advantage, at least for a while to come. It is one of the frontiers of innovation for company building (and nation building for that matter): keeping people feeling, thinking and innovating like children. However, Aaron was right and this is not enough to keep some great talent from slipping through.

I had two run-ins with Google HR. Once after they purchased a company that had a product that I was a primary architect and programmer for. Part of the reason the process staled was because I explained "I consider programming like hammering nails. I program. I am not a programmer". I found their questions on what languages I program with to be silly. The other reason it staled had to do with their inability to discuss practical "projects" we could "work on together". It's as if Google is an Amish parent wanting to offer you their daughter in marriage with you committing before even getting a decent look at her.

To their credit the words "projects" and "work on together" coming from a potential hire are foreign to all companies. But if Google wants to avoid becoming Xerox in 30 years they would do well to understand this language and hire more like Al Qaeda rather than Ikea.

Developing a more network based structure is not that difficult to envision. For starters get rid of "%20 time", it's a joke. Instead I could imagine something more like: %25 on mandated work, %25 on google projects (what used to be %20 time), %50 time on projects entirely of your choosing that would be handled like an investment (with yearly reviews of direction as a board of a company would) and finally abolishment of most vacation days with vacation taken at will from the %50 and in any form (clustered, by day, half days, whatever). Full time creativity is a form of cognitive dissidence fostered only by industrial era thinking. Creative workers should be given the option to take minor or major pay cuts dynamically and at will in order to replenish their energy. Whereas today, asking for extra time off, even with a cut in pay, carries a lot of guilt for most. Such a structure as described, when monitored, also provides valuable feedback on the health of the employee and company. When you get something like this Google, hit me up on Pond.

<comment><USER40> Another 2c: Google[x] might be the founders way to avoid the sloth of a mammoth structure but it may also be the one thing that turns them into Xerox. To prevent that expressly avoid the patent-chest-trap and future reliance on this over innovation in product based wealth. If your investors cant give up on future patent wealth secretly plow efforts into reducing the effectiveness of patent-chests for all.

<comment><USER41> The laser printer patent developed at PARC supposedly paid for PARC a hundred times over.

</comment></comment></comment><comment><USER42> Simply not true in 2013. They are aggressively hiring engineers of all sorts. College degrees are less relevant. Google, of all companies, have developed some of the finest talent recognition software in the valley.

<comment><USER43> _Google, of all companies, have developed some of the finest talent recognition software in the valley._

Maybe they have, but we won't know without hard evidence. Your assertion doesn't make it so.

I like Google, I've eaten in their cafeterias (many friends work there), and I use several of their products.

And ... I'm aware that essentially all of their revenue comes from AdWords and AdSense. Everything else is subsidized by those two products. No other major Google product has had to compete in the marketplace on its own merits. So, objectively, it's hard to measure how talented their people are. (You're not going to convince me that Google has the world's most talented UI designers.)

<comment><USER4> To be fair, with the exception of hardware and retail companies, almost all internet era companies make their revenue from selling ads because people have a negative reaction to roadblocks and paywalls. Facebook is just as beholden to ads to Google is.

I would argue that most of the Google products that are successes today in terms of users: Gmail, Chrome, Android, Maps, Search, etc have competed on the same merits as similar products from competitors. Yahoo Mail or Hotmail, for example, are subsidized by other products as well.

I don't think Google has a monopoly on talented individuals, but I do think Google has a better culture than other companies. You can have the smartest people, but a shitty internal culture can act to break their innovation, not multiply it. I've worked at IBM and Oracle and definitely, very smart people at Oracle that I knew of were hampered and stymied by a suffocating corporate layer.

</comment></comment></comment><comment><USER44> Growing up is overrated anyway.

</comment><comment><USER45> I transferred to the Motorola division so I kind of have both perspectives while being at Google.

In some regard, a lot of Googlers don't even know how good they have it. What Google manages to do pretty well is pick the right people for 'the company' and then acclimatize them extremely fast to everything: process, tools, lifestyle and sometimes koolaid.

In doing so are we infants? Perhaps. But fundamentally this is no different than what all children go through (acclimatization to their environment).

I'm not sure working for some crummy company, or a startup means one life is better than the other - they are different. And if you're lucky enough to be able to choose that then that is awesome.

<comment><USER46> So what's the moto side like?

<comment><USER45> In what regard -- the question is too broad for me to generally answer meaningfully.

</comment></comment></comment><comment><USER47> Claims that other people are "infantile" are almost always just a pissing contest. It's an easy way to put someone down since being infantile is hard to define, and making that claim already sets you up as the more mature person in the conversion.

And the idea that having stuff done for you is equivalent to being treated like a kid says more about the psychological issues of the author than reality. Our entire economy is based around exchanging services for money. Google takes it to a (slightly) higher level, although the only perk that people use in real life is the food.

</comment><comment><USER48> This is typical western philosophical bullsh __. As life becomes easier in Western world, people have more time to fret about such inconsequential things. Please carry on!

</comment><comment><USER49> The Google = slimy politician comparison really undercuts the detached perspective that he's hoping to impart to Googlers or potential Googlers.

</comment><comment><USER50> > Even the suburban desert of Mountain View is better.

haha, i think mountain view is actually quite a quaint little town compared to sun-beat santa clara, which really isn't so bad either. (aaah, i miss the weather, i do.)

but heck, the late aaron swartz lamenting an HR tact that pervades so many of the companies, software and otherwise, hiring math & science "types?" holiday stylesheet or no, it's a depressing read.

</comment><comment><USER51> read this before noticing it was written in 2006 by Aaron Schwartz. That certainly colors the perspective. I wonder how much has changed.

<comment> ex-googler1 not much. i quit a few months ago and so happy to be out of that insane place. they compare your work against your coworkers, so its constant competition, even if you meet your "goals". they also have zero work/life balance.

all that free food and google shuttles wear off after a couple of months. then their non-stop work life settles in and you realize you made a horrible decision by accepting the job offer.

the only bright side is you get stock options and have a great company on your resume.

<comment><USER52> Apparently you haven't worked for Microsoft. Google is engineer's heaven compared to MS.

<comment><USER53> >Google is engineer's heaven compared to MS.

How so? I'd be crushed at the thought of using my skills to get people to click on ads, or coming up with new ways to mine their data.

<comment><USER53> On second thoughts, I realize this is bit of a generalization but then again, I was replying to a generalization :P

</comment></comment></comment></comment></comment><comment><USER54> Something that sounds like an ideal is nothing like what you would expect it to be?

That's like every other thing in the world ever, isn't it?

</comment><comment><USER55> Infantilizing not infantile. Loss of potential given the strong potential of many Googlers. His insight into opportunity costs is bright if slightly imperfect, as always, I'd say.

This is more a complaint against people not solving hard problems enough (a la Steve Yegge) than a complaint against bean bags - those are just metaphors.

</comment><comment><USER56> I recently got an interview with Google (didn't get it), I'd kill to work with them. Even if they pay a bit less than what I'm currently getting, if it means I'll work on something less boring than what I'm doing now (typical business corporate bs where I'm working pretty much by myself).

</comment><comment><USER57> Very silly article. There are so many things wrong but i will comment on the first para. T any about living your life when most people seem to be outsourcing even bringing up children in the bay area since they have to work. Laundry and food are hardly about living your life.

</comment><comment><USER58> I thought HN's algo drove controversial stories off the front page. This is generating a bunch of arguments and yet it's still here. There are other stories I've commented on that get knocked off the front page with less drama than I'm seeing here.

</comment><comment><USER59> That is what you would expect it to be, too. I see them dominating the world for next 2 years at least but where they go there will determine how strong the vision is of the founders.

</comment><comment><USER60> In times like these, I'm minded to beware the echo chamber. Coz I'm very poor at telling when I've fallen into one.

</comment><comment><USER61> >"People read the airbrushed versions of Google technologies in talks and academic papers and think that Google has some amazingly large computer lab with amazingly powerful technology."

Latest acquisition of "Boston Dynamics" and team working at "Google X" and other projects lead to second thought . In the end it's choice of people , we should not have say in what they should or shouldn't.

</comment><comment><USER62> If I had a talent I would write about companies treating their employees like criminals

</comment><comment><USER63> The tl;dr is Google Google Goo.

</comment><comment><USER64> Hm. I feel like Google is following Diamond Age's tips on how to train their engineers. There's a pretty great passage in there about this, and you owe it to yourself to read it. It reads more like a prophecy than a sci-fi book, but it's super good. :)

</comment><comment><USER65> counterpoint: growing up != performing life-taking tasks like laundry.

</comment><comment><USER66> Hey, did you also here that there are NO trees on their campus?

<comment><USER67> They've all been replaced by hash tables.

</comment></comment><comment><USER68> RIP</comment>


Electrical Ground Current Event Detected in Norway - <AUTHOR> https://spaceweather.com/archive.php?view=1&day=07&month=01&year=2020 <comment><USER2> Spaceweather.com always has the most interesting news. The site is run by Dr. Tony Phillips, a science writer for NASA and high school teacher in Bishop, California.

His students launch balloons to the edge of space to conduct research and to carry up trinkets that they sell to fund their missions. If you scroll down on the linked page, you'll see one of the silk roses they sent up on a recent mission.

More details in a discussion from last year:

[https://news.ycombinator.com/item?id=20372021](https://news.ycombinator.com/item?id=20372021)

<comment><USER3> Still renders correctly in Netscape Communicator 4.76.

[http://www.w6rz.net/netscape.png](http://www.w6rz.net/netscape.png)

<comment><USER4> What a relief. I thought I was going to have to upgrade version 5.1 or something

<comment><USER5> Netscape 5 was never released. They skipped that version when they decided to focus on the Gecko engine (later used in Firefox).

Netscape 6 was released using the new Gecko engine.

<comment><USER6> Thus why upgrading is complicated. Requires writing the upgrade yourself

<comment><USER7> Almost spit out my coffee that was so funny.

</comment></comment></comment></comment></comment></comment><comment><USER8> Wow.

> _About 15 minutes before the disturbance in Norway, the interplanetary > magnetic field (IMF) near Earth abruptly swung around 180 degrees, and the > solar wind density jumped more than 5-fold. Earth may have crossed through a > fold in the heliospheric current sheet--a giant, wavy membrane of electrical > current rippling through the solar system. Such crossings can cause these > kind of effects._

<comment><USER9> Would this type of event potentially affect human behavior, such as sleep patterns?

I am genuinely curious because, anecdotally, my son and I had a difficult night sleeping and a friend said she and her son also had difficulty sleeping that night.

<comment><USER10> Hey, I did too! Took a sick day yesterday.

And, today I learned of the existence of the heliospheric current sheet!

[http://wso.stanford.edu/gifs/HCS.html](http://wso.stanford.edu/gifs/HCS.html)

Last I heard, astronomers didn't permit current flow in space. Or, anyway, talking about it.

</comment></comment></comment><comment><AUTHOR> Am I understanding the article correctly? They're guessing that because there was no solar wind which would normally trigger aurora, the Earth must have passed through a sort of rogue wave in the heliosphere, which also was strong enough to induce a current in the ground?

<comment><USER11> Not rogue. And I'm unsure if wave is the correct term. I think what they're implying is that when passing through a "fold" in the heliospheric current sheet ([https://en.wikipedia.org/wiki/Heliospheric_current_sheet](https://en.wikipedia.org/wiki/Heliospheric_current_sheet)) the polarity flips. I presume that the tighter the fold, the less distance between the polarity change, the greater the induced current; tight enough and the polarity is different between two close points on earth, inducing a greater than normal current.

But I didn't pay enough attention in high school physics, so....

</comment></comment><comment><USER12> This kind of event can cause transmission power outages.

[https://en.m.wikipedia.org/wiki/Geomagnetically_induced_curr...](https://en.m.wikipedia.org/wiki/Geomagnetically_induced_current)

<comment><USER13> It can even kill tons of animals/people at once[1]. Four legged animals are more vulnerable than humans, since the voltage across your heart depends on how far apart your feet are. Also, we wear shoes.

Imagine how spooky it would be to be struck by ground current without understanding... Whether or not you survive could depend entirely on what direction you're standing. One direction will mean your feet are at different voltages and current jumps into your nice conductive veins and arteries, all passing right through your heart. The other direction means the front and back of each foot is at different voltages, and you may not even feel it. Hundreds of people just drop dead of heart attacks around you.

[1]: [https://www.theverge.com/2016/8/29/12690402/lightning- strike...](https://www.theverge.com/2016/8/29/12690402/lightning-strike-kills- norway-reindeer-death-why-science)

<comment><USER14> FUD. It's not lightning.

<comment><USER15> The effect is the same, does not really matter what causes the current gradient in the ground.

<comment><USER16> You need a huge voltage density. Ten volts between your feet is going to do nothing at all.

<comment><USER15> I'm not aware of anything like "voltage density", what do you mean by that?

The potential gradient is the thing that kills you. It can either be created by a lightning strike or by voltage induced into the ground as mentioned here.

<comment><USER16> I'm talking about the potential gradient without bringing up new terminology.

> It can either be created by a lightning strike or by voltage induced into > the ground as mentioned here.

If 'it' is lethal levels, then I don't think that 'or' is correct.

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> Why are there people measuring ground current? Even though random scientific interest is enough reason, I suppose it's more than that.

<comment><USER18> Space weather events can have measurable effects on electrical things that are supposedly grounded.

The 1989 coronal mass ejection caused lots of problems with radios, which is probably one of the better known side effects of a solar storm. But it also took out power grids because utilities got a phantom current that just showed up out of nowhere on their long cables. This current can also cause problems for other long metal things buried in the ground like oil pipelines.

IIRC a similar event in the 19th century electrocuted a bunch of telegraph operators. They unplugged the power as a safety measure, but the Earth's magnetic field generated so much current in the telegraph cables that they still worked.

<comment><USER19> > event in the 19th century electrocuted a bunch of telegraph operators.

True but you are underselling it a bit. Aurora was seen as far south as Colombia and in Colorado it reportedly was bright enough to wake people up because they thought it was day.

It is assumed that had that occurred today it would have fried the power grid on at least a continental scale.

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

<comment><USER20> I honestly think it's crazy that we don't give this more attention as a society. Like, there is serious talk that we need to look out for Asteroids. But nothing about hardening ourselves against the next high output solar event, which seems more likely to be a problem.

<comment><USER21> My understanding is that the only early warning system we have relies on old and failing satellites and provides only minutes of warning.

<comment><USER22> "In August 2018, NASA's Parker Solar Probe launched to space, soon becoming the closest-ever spacecraft to the Sun. With cutting-edge scientific instruments to measure the environment around the spacecraft, Parker Solar Probe has completed three of 24 planned passes through never-before-explored parts of the Sun's atmosphere, the corona."

[https://www.nasa.gov/feature/goddard/2019/nasas-parker- solar...](https://www.nasa.gov/feature/goddard/2019/nasas-parker-solar-probe- sheds-new-light-on-the-sun/)

<comment><USER21> Oh neat. I was at a lecture about space weather some years ago and several scientists were lamenting the delays in that project. Glad it got sorted!

</comment></comment></comment></comment></comment></comment></comment><comment><USER23> So freaking wild. Never seen this website before. I just learned like 10 new things.

</comment><comment><USER24> What are the units on the current and magnetic field graphs, I wonder?

<comment><USER13> The magnetometer stuff is declination, not intensity. Direction of the field.

The electrical measurement is in 10s of microvolts per meter and was ~10 mV/m. It's hard to translate that to current since the ground impedance can vary, but it's in the milli- or microamps per meter. This is high for this kind of activity, but much lower than the limit the grid can handle.

In the bad old days a storm like this would have been enough to kill. Telegraph operators would have been exposed to kilovolts across their ears on a line 100s of km long. The ground current may a couple milliamps, but that could still cause hundreds of amps to flow.

Original observer's notes: [https://spaceweathergallery.com/indiv_upload.php?upload_id=1...](https://spaceweathergallery.com/indiv_upload.php?upload_id=147572)

</comment></comment><comment><USER25> near realtime photos of aurora [https://spaceweathergallery.com/aurora_gallery.html](https://spaceweathergallery.com/aurora_gallery.html)

</comment><comment><USER26> I'd love to know HOW such a measurement is made. What's the reference "ground"?

<comment><USER27> Measure between 2 points of ground in a planned fashion, the difference should be 0

[https://openei.org/wiki/Telluric_Survey](https://openei.org/wiki/Telluric_Survey)

<comment><USER26> cool thanks!

Does this imply that the points a pretty far away from each other to measure an effect from such a large imf? If so, I'm curious as to the equipment that would enable such a measurement. This is A wholly different ball game than measuring ground currents across a pcb.

<comment><USER13> In this case the probes were 40 meters apart. At that distance the voltage is normally ~40 mV, which is trivially measurable. Fluke makes a line of fancy multimeters for this kind of thing

<comment><USER26> Oh! Only 40 meters. I had assumed the distance must have been mush greater for these scale effects.

</comment></comment></comment></comment></comment><comment><USER28> Two topics have not been covered yet:

1) Because its more spectacular there's been discussion of exploding substations and arcing power lines. Which is true.

However a more practical HN topic would be "we all know" that inter building LAN networking should be optical for power isolation reasons, but "we all know" that often you can get away for years with copper network cables over a short enough distance if they're on a similar enough electrical feed. If you live in Florida, world capitol of thunderstorms, the wiring and switch ports won't survive a week, but maybe northern yankees can do copper inter building networking for years between lightning related failures. Anyway, yesterday, if you lost some ethernet switch ports or entire switches connected to 100 meter copper lines over long distances maybe to an outbuilding or up a tower or to the roof for cameras or something, well, you kinda know why now. Of course you probably lose 0.1% per year of hardware anyway under normal conditions so maybe losses were mere coincidence... or was it? There's probably a dollar value to blown ethernet ports related to that storm; can't say if its $10K or $10M worldwide but I'm sure at least SOME money was lost in hardware and lost productivity.

2) Aside from bulk power transport, and wired signalling, a third application of ground current is archaeological / geological resistance surveys.

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

The idea is underground "stuff", perhaps geology layers, perhaps ancient ruins, has varying DC resistance compared to typical background dirt and rock, and we have the technology to measure and map those electrical anomalies and therefore determine things about underground stuff. Cool. When the background electrical and magnetic fields are quiet/constant -ish, anyway.

I've always wanted to participate in one of those, never got the chance. Anyway weird earth currents mean its probably pretty hopeless to try gathering research data during a geomagnetic storm. Yeah I know the 4-wire technique is supposed to help and differential measurements and all that, but the gear is designed for normal conditions not crazy storms so there seems no way you're gonna get good data during a severe storm.

I mean, even the most obvious non-ground measurement problem is even differential GPS is going to get annoyed at massive ionospheric disturbances so you're going to have time/location noise in the data, if nothing else. I wonder how bad the geomagnetic weather has to be to keep construction civil engineering surveyors home for the day, probably pretty bad indeed, but I bet a lot less and a lot more likely to happen than it takes to "short out substations" and vaporize high voltage lines or whatever doomsayer stuff.

Aside from DC resistance measurements, I know the same people do magnetic surveys and likewise having a huge geomagnetic storm as a noise source would seem likely to degrade the gathered data.

</comment><comment><USER29> Moskstraumen?

<comment><USER30> Straumnes.

</comment></comment><comment><USER31> The earth is about to flip !

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

\- [https://www.youtube.com/watch?v=1UJKZTjGCss](https://www.youtube.com/watch?v=1UJKZTjGCss)

</comment><comment><USER32> USA might have used harp to cause an earthquake in Iran near a nuclear location. That might be the cause of what we have seen. (I did not check the time nor that if that is possible)

<comment><USER15> I think you might be onto something here. Will start looking for my tinfoil hat, while you keep us posted.

<comment><USER31> Triggering earthquakes is a thing. This dude has devoted his whole career to it.

[http://www.ihed.ras.ru/mg/novikov.htm](http://www.ihed.ras.ru/mg/novikov.htm)

<comment><USER15> I doubt he is responsible for that. Iran is experiencing earthquakes over and over again, nothing really new for them and most likely not the work of some "weather machine".

<comment><USER31> Think about this: this guy may well have doubts.</comment></comment></comment></comment></comment>


Continuous Delivery: A Christmas Tale - <AUTHOR> https://circleci.com/blog/continuous-delivery-a-christmas-tale/ <comment><USER2> > And I, in my hoodie, sat down at my desk, finally able to take a deep > breath. And off in the distance, I heard a voice cry:</comment>


58% Of Americans Still Own A VCR - <AUTHOR> http://www.businessinsider.com/pew-research-electronics-poll-2014-1

<comment><USER2> I have a VCR. To play a tape I would have to dig it put of a closet and hook it up. If I were surveyed by them, would I be counted among VCR owners?</comment>


How currying leads to elegant, readable code - <AUTHOR> http://fr.umio.us/favoring-curry/ <comment><USER2> If I'm writing a function where there isn't an obvious order for the arguments, I chose the order such that Currying is most useful, even if the language I'm writing in doesn't support Curried functions/partial function application. You never know when someone will port your code or create cross- language bindings.

For instance, my company writes a lot of code in a proprietary language and the other day I was writing a function to generate random strings, given a length and an "alphabet" string from which to choose characters.

I chose the ordering:

        randomString alphabet length = ...

so that if partial function application were added to the language, one could simply write the functions randomHex and randomBase32 as:

        randomHex = randomString "0123456789ABCDEF"
        randomBase32 = randomString "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"

The alternative ordering would allow me to easily write functions that generate fixed length strings and take their alphabets as inputs:

        random10Char = randomString 10
        random4Char = randomString 4

This ordering is much less useful in general, so I chose to make the alphabet the first parameter.

On a side note, our language also has some time series extensions for dataflow programming. There's an API for efficiently adding new data flows based on something similar to template specialization, but the API is unwieldy and the source of much confusion. So, I wrote a wrapper API that uses reflection to expose the same functionality as partial function application / Curried functions over time series.

<comment><USER3> It's an interesting design question to pick orderings that work best with currying.

Oddly though, when writing haskell code, I don't worry about it much. Once I find myself needing to `flip` a function before using it, I have determined experimentally that the original parameter order I picked was not the best one, and I then go change the function, and let the type checker walk me through fixing any necessary call sites (which also verifies if the new parameter order is better or not).

<comment><USER4> I wonder why languages don't support currying arbitrary parameters.

It seems like it would be easy enough to have a special "placeholder" keyword that means "these parameters will be the parameters of the curried function". To take his example:

        var jp = formatNames2('John', 'Paul');

That might be written like this instead:

        var jp = formatNames2('John', 'Paul', _);

And then if you want to curry the second parameter instead of the third, it's easy:

        var jp = formatNames2('John', _, 'Jones');

Or maybe they do and I just haven't heard of it?

<comment><USER5> Clojure[0] and Anarki[1] (public fork of Arc) both provide a way to do this (with more than one argument as well). They both have syntax for a "literal function". Your second example would become:

Arc/Anarki: [format-names2 "John" _ "Jones"] which expands to (fn (_) (format- names2 "John" _ "Jones"))

Clojure: #(format-names2 "John" % "Jones") which expands to (fn (%) (format names2 "John" % "Jones"))

Then for a function of two arguments that curried the middle one:

Anarki: [format-names2 _1 "Paul" _2] which expands to (fn (_1 _2) (format- names2 _1 "Paul" _2))

Clojure: #(format-names2 %1 "Paul" %2) which expands to (fn [%1 %2] (format- names2 %1 "Paul" %2))

[0] [http://clojure.org/reader](http://clojure.org/reader) [1] [https://github.com/arclanguage/anarki/blob/master/CHANGES/ma...](https://github.com/arclanguage/anarki/blob/master/CHANGES/make- br-fn)

<comment><USER4> I should have known that if I can imagine a language feature, it will already be implemented in the Lisps....

</comment></comment></comment></comment></comment><comment><USER6> _Currying is the process of turning a function that expects multiple parameters into one that, when supplied fewer parameters, returns a new function that awaits the remaining ones._

I think this, along with the whole article, is the best explanation of currying I've seen on the whole damn internet.

<comment><USER7> It's also wrong :)

[http://www.uncarved.com/blog/not_currying.mrk](http://www.uncarved.com/blog/not_currying.mrk)

Which the author freely admits:

(Some will insist that what we're doing is more properly called "partial application", and that "currying" should be reserved for the cases where the resulting functions take one parameter, each resolving to a separate new function until all the required parameters have been supplied. They can please feel free to keep on insisting.)

<comment><USER8> As long as you have ordered parameters, I'm not sure this is such a big issue. First, tuples are (morally, i.e. up to non-termination) associative in most reasonable languages, so the product/exponential adjunction can be shifted around however you like

        -- all morally identical
        a ->  b -> c   -> d
        a -> (b -> c   -> d)
        a -> (b -> (c -> d))
        (a, b)  -> c   -> d
        (a, b, c)      -> d
        ((a, b), c)    -> d
        (a, (b, c))    -> d

However, so long as you have parameter order (we're not allowed to commute our tuples, just reassociate nested tuples like ((a, b), c) <-> (a, (b, c)) and so on) then flip still morally works

        flip (someFn :: (a, b, c) -> d)
          :: (b, a, c) -> d
          :: (b, a) -> c -> d
          :: b -> a -> (c -> d)

The same story holds for partial evaluation. Of course, there have to be _far_ more edge cases to handle all this tuple twiddling.

\---

Really, I think it's pretty meaningful to blur the distinction between "curry (once)" and "curry repeatedly along with tuple reassociation". The later forms an equivalence class of function types which all have the same application behavior.

<comment><USER8> Also to explain that strange "adjunction" comment, currying results from the notion that the things of type

        (a, b) -> c

are exactly equivalent to the things of type

        a -> (b -> c)

An adjunction (F, G) occurs when the things of type (F a -> c) are equivalent to things of type (a -> G c), so if we pick F x = (x, b) and G x = (b -> x) then we see that currying is an adjunction between (,b) and (b ->).

<comment><USER9> One intuition for this is that (a, b) is the product type (a × b) and the function arrow (a → b) corresponds to exponentiation (b^a), so you get the isomorphism for free from the identity c^(a × b) = (c^b)^a.

</comment></comment></comment></comment></comment><comment><USER10> Is the final code equivalent to:

      var getIncompleteTaskSummaries = function(membername) {
        return fetchData().then(function(data) {
          var incompleteTasks = [];
          for (i = 0; i < data.tasks.length; ++i) {
            var task = data.tasks[i];
            if (task.username == membername && !task.complete) {
              incompleteTasks.push({id: task.id, dueDate: task.dueDate, title: task.title, priority: task.priority});
            }
          }
          incompleteTasks.sort(function(a, b) {
            return a.getTime() - b.getTime();
          });
          return incompleteTasks;
        });
      }

?

Apologies if that's wrong, i barely know JavaScript.

That code is not so great, and a bit '90s, but it's not appalling. The horrifically verbose non-currying code in the article isn't something i see any need to write. It looks like an outrageous strawman to me.

My code here could definitely improved with some functional idioms for the looping, picking, and sorting, but i wouldn't reach for currying here.

<comment><USER11> This is perfectly good style, and better than the original article. Don't listen to the functional language fans. Replacing the for loop with its functional equivalents would make it less readable.

<comment><USER12> Currying with map/reduce/filter can be hard to read, but list comprehensions are pretty nice:

       (defn get-imcomplete-task-summaries [membername]
          (.then (fetch-data)
                 (fn [data]
                   (sort-by :time
                            (for [task (:tasks data)
                                  :when (= membername (:username task))
                                  :when (not (:complete task))]
                              task ;; immutable, no need to copy
                              )))))

It makes me a little sad that functional programming has come to mean map/reduce/filter for lots of people, rather than avoiding mutation which is far more interesting.

<comment><USER11> Well, avoiding mutation can be helpful but it's not a rule to be followed blindly either. A mutable local variable never hurt anyone, so long as it doesn't leak out of the function.

<comment><USER13> Even in a multiple-thread scenario?

<comment><USER10> As an aside, one of the really interesting ideas that's bubbling up from Rust is that it's not mutable state that's a problem, it's shared mutable state, and that you can make it safe by removing the sharing, rather than removing the mutability:

[http://smallcultfollowing.com/babysteps/blog/2014/05/13/focu...](http://smallcultfollowing.com/babysteps/blog/2014/05/13/focusing- on-ownership/)

I have no idea if this is true, but it's going to be really interesting to see that idea tried.

</comment></comment></comment></comment></comment></comment><comment><USER14> Currying can be hard to spot if you're not used to it. Especially in a language with inferred or dynamic type, it's not obvious that the var contains a function, not a result object.

var result = somefunc(a,b) // object var otherResult = somefunc(a) // function

It gets even more confusing if overloading of function names for different parameters or different number of parameters is allowed.

So elegant: maybe. Readable: no. Depends on the programming language.

<comment><AUTHOR> I don't think currying can reasonably be combined with optional parameters. At least I've never seen a useful way to do so.

In a previous article ([http://fr.umio.us/why-ramda/](http://fr.umio.us/why- ramda/)) I discuss more thoroughly how I would tend to use this currying, namely to build up collections of useful functions, often in points-free style, so that major parts of the application would end up as (ideally well- named) functions, each which serve as pipelines of these smaller functions, passing data through the system.

I do find this significantly more readable, but _de gustibus non est disputandum_.

<comment><USER15> I've never used that particular feature, but Livescript lets you use default arguments on curried functions by calling with no arguments.

[http://livescript.net/#functions](http://livescript.net/#functions)

<comment><USER8> Which implies there's a distinction between "siphoning arguments around" and "application". That feels very weird.

</comment></comment></comment></comment><comment><USER16> "Ok, here we go. Does code like this look at all familiar?"

No, because I use Array.prototype.filter(), Array.prototype.map(), and Array.prototype.reduce() to accomplish these things...

<comment><AUTHOR> Yeah, I probably shouldn't have cribbed the example from my old "Intro to Functional Programming" talk...

</comment></comment><comment><USER17> Basic point free style as described in the article is alright in javascript.

Extreme point free style does not work in javascript, AT ALL!!!! Two reasons:

1) Find the bug: the table sort is glitchy. Is the bug in this suspicious line, or somewhere else? (Real line of code in a codebase I inherited, and yes there is a bug in it)

        var sorted = rows.sort(_.unsplat(_.pipeline(
            _.partial(_.map, _,  accessor),
            _.splat(comparator))));

2) I use React, so I can get away with a lot of really functional stuff since React is well suited for functional javascript. React is a great functional abstraction, but under the abstraction is imperative code. Imperative code means you need a debugger. When you write in a point free style, there's nowhere to place a breakpoint!

<comment><AUTHOR> It is harder to debug points-free code. I find myself doing more debugging with `log` statements in a long pipeline than I do with other styles of code.

On the other side, I tend to work with a few well-tested functions over and over and end up with fewer problems to debug when I work in a functional paradigm, points-free or not.

On rare occasions, when I need to debug something that is difficult __because __it 's points-free I simply add some explicit parameters, either temporarily to enable debugging or permanently.

Points-free is nice, but should never be an overriding goal.

</comment></comment><comment><USER18> I'm generally a fan of currying, but specifically when used with javascript, I think it can be problematic. The default behaviour of any function when called with fewer arguments than specified is to set named arguments to undefined. Meaning, functions in javascript always take any number of arguments and changing that default behaviour is confusing. There is also the matter of the "this" parameter.

I think that using the .bind() method on functions is the right approach. It will lead to less surprising behaviour in the context of javascript.

</comment><comment><USER19> Currying is the factory factory pattern for λ people.

</comment><comment><USER20> The "curried" code seems less readable and maintainable than the original code. Is this like dependency injection where I have to make my code harder to read and maintain to satisfy some technical definition of "loosely" couple?

<comment><USER21> It'll seem less readable at first, yes. I've seen a codebase transformed by currying. We were able to remove six functions from one webservice interaction service, and handfuls throughout other parts of the code, and have made debugging and maintenance easier.

The code is a little more confusing at first glance. The developers who replaced the code with curried functions didn't inform the whole team what they were doing. There were a lot of wtfs until they clarified. Now we can read it, and I know I'll be looking for places for partial applications.

</comment></comment><comment><USER22> I have no experience neither with JS nor with functional programming, but know Lambda calculus and currying from Discrete math courses.

As Currying and functional programming a popular thing now, I was thinking what my current codebase would look like in C# if I were writing code in a more functional way.

So, obviously C# isn't a functional languageat all but using Func<T>, and maybe some delegates would enable this easily.

I'm not sure this would turn my code to more elegant or readable.

What would I benefit from ?

<comment><AUTHOR> I'm not really a C# person, but from what I know of the language, although it has some lambdas and some other functional features especially around LINQ, functional programming really is against the grain of the language, and would not be easy to integrate into the same code.

The .NET platform of course has F#, which is a dedicated functional language. Some day I'll spend some time learning this one... perhaps.

</comment></comment><comment><USER23> Note that currying is not necessary for partial application, here is partial application implemented in C++14: [http://coliru.stacked- crooked.com/a/bed4a4fdd6e856b0](http://coliru.stacked- crooked.com/a/bed4a4fdd6e856b0)

However, I find lambdas with the extra parameters repeated more readable than partial application.

</comment><comment><USER24> I'm probably missing something, but why not just do...?

      var jp = function(last){
          return formatNames2('John', 'Paul', last);
      }

<comment><AUTHOR> You can if you want:

        var jp = function(last) {
            return formatNames2('John', 'Paul', last);
        };
        var je = function(last) {
            return formatNames2('James', 'Earl', last);
        };
        var lh = function(last) {
            return formatNames2('Lee', 'Harvey', last);
        };
        var c = function(middle, last) {
            return formatNames('Clarabelle', middle, last);
        };

But I find this cleaner:

        var jp = formatNames2('John', 'Paul'};
        var je = formatNames2('James', 'Earl'};
        var lh = formatNames2('Lee', 'Harvey'};
        var c = formatNames('Clarabelle'};

<comment><USER24> Should you really have jp je lh and c at all than? Having so many different functions seems like a problem on its own, and maybe there should just be an array of names and a function iterating over them...

<comment><USER25> It's a toy example; he's just trying to show how currying works, rather than why you should use it.

If anything, it does show that one useful thing about partial application is that you can write a generic function (formatNames) and then make it more specific (formatNames("John")) without repeating yourself.

<comment><USER24> I think I understand how it works, I just haven't seen examples that demonstrate why it is useful.

<comment><USER26> Say you want to calculate distances from origin to each point in array, and keep only these greater than R.

Using fors and ifs:

        var origin = Point(0, 0);
        var R = 100;
        var result = [];
        for (var i : array) {
            tmp = distance(array[i], origin);
            if (tmp>R) {
               result.append(tmp);
            }
        }

Without currying (nobody would write it that way):

        var origin = Point(0, 0);
        var R = 100;
        result = filter( map(array, function (x) { return distance(x, origin); }),
                         function (x) { return greater(x, R);} );

With currying it almost reads like SQL:

        var origin = Point(0, 0);
        var R = 100;
        result = filter( map(array, distance(origin)), greater(R) );

It's useful for functions that you predict will be used many times with one of the arguments the same. Yes, it's just syntactic sugar, but it sometimes makes code clearer (especially when literal function syntax is as verbose as in javascript).

<comment><AUTHOR> A nice example. Thank you.

I just want to note that in Ramda, because of it's strong insistence on a data-last API (which makes the currying easier), this would be written in this order:

        result = filter(greater(R), map(distance(origin), array));

But it's precisely the same idea.

</comment></comment></comment></comment></comment></comment></comment><comment><USER27> Upvoted just for the quality of the pun.

<comment><AUTHOR> Have to thank/blame @buzzdecafe for that!

</comment></comment><comment><USER28> I favour a nice hot Rogan Josh. Helps me write excellent code the next morning. Not so the half a dozen pints I had along with it.</comment>


NSA paid tech companies like Facebook millions to cover cost of Prism - <AUTHOR> http://www.dailymail.co.uk/news/article-2401313/NSA-paid-companies-like-Facebook-millions-taxpayer-money-cover-cost-Prism-surveillance-program.html <comment><USER2> Note: This was published in August, 2013.</comment>


Show HN: DevFreeBooks – A collection of free books for developers - <AUTHOR> https://devfreebooks.github.io <comment><USER2> Am I the only one who dislikes these free resource type collections?

One, they present too many choices of dubious value. The most important part of book recommendations is a vetting of a few resources that are guaranteed to be enlightening.

Two, the monetary cost of a book isn't the largest "cost". The largest cost is the time spent reading the book, which again means that the most value that can be added is through the vetting of the contents of the book compared to all other alternatives.

<comment><USER3> _" Two, the monetary cost of a book isn't the largest "cost"."_

Is that going to be true for all people around the world, regardless of income? Sure it's probably true for you or I, but free learning resources are likely to be vital for many others.

<comment><USER4> I don't think PP worded his point as clearly as he could but I think he meant something more along the lines of "a small list of free books that is vetted for quality is much more valuable than a big list of many more free books that includes duds". There is an intersection between that point and the point you made/and responded to which is, "some books (and therefore vettings) are so valuable they might be worth paying for over a less good free alternative" ... of course weighted for the amount of disposable income a person might have.

</comment></comment></comment><comment><USER5> [https://github.com/vhf/free-programming-books](https://github.com/vhf/free- programming-books) is always worth a look.

<comment><USER6> Actually that project has much more content, and it seems that the collection is curated a little.

<comment><AUTHOR> That's why I built DevFreeBooks, to curate more the free books, instead only add any link without know if is a good or not content.

</comment></comment></comment><comment><USER7> These are awesome for JS: [https://github.com/getify/You-Dont-Know- JS](https://github.com/getify/You-Dont-Know-JS)

<comment><AUTHOR> added!

</comment></comment><comment><USER8> This is a useful resource - thanks for compiling it.

I'd suggest allowing users to submit short reviews of each ebook. I'd imagine it would be useful to have some insight as to which book would be most helpful for different circumstances - especially once you start to get some more submissions and there are more books per category.

<comment><USER9> Similar to this [http://lesswrong.com/lw/3gu/the_best_textbooks_on_every_subj...](http://lesswrong.com/lw/3gu/the_best_textbooks_on_every_subject/)

From the link, here's a quote:

> _There have been other pages of recommended reading on Less Wrong before > (and elsewhere), but this post is unique. Here are the rules:

\- Post the title of your favorite textbook on a given subject.

\- You must have read at least two other textbooks on that same subject.

\- You must briefly name the other books you've read on the subject and explain why you think your chosen textbook is superior to them._

</comment></comment><comment><USER10> Is there any reason to to this without cooperation with [https://github.com/vhf/free-programming-books](https://github.com/vhf/free- programming-books) which already has over 4K commits and 16K forks?

<comment><USER11> I agree they should cooperate, but I'm curious about the 16k forks.

What's the point in forking a project like this? Adding changes and submitting pull requests would be the obvious thing, but that doesn't seem to be the case because there are only 4K commits and less than 30 open pull requests. So anybody know what's up with all the forks?

<comment><USER12> I'm guessing the forks are a form of bookmarking. At least for my part, I fork every single repository that might even be slightly interesting for me in the future. Hell, I even fork repos that I explicitly hate, just so I can keep tabs on them or learn more about them.

<comment><USER11> I guess bookmarking would explain it, but seems like the wrong tool for the job IMO. Forking means you have to do extra work to get the latest version of the code, even if you're not making any local changes. Using the "watch" or "star" feature or an actual bookmark means you'll always go straight to the most up to date version.

> Hell, I even fork repos that I explicitly hate, just so I can keep tabs on > them or learn more about them.

I don't know what it means to "hate" a repo, but whatever it means, forking the repo actually means you _won 't_ be keeping tabs on them because your personal fork will have no activity until you pull from the original. And if you need to go to the original to get updates, why not just go straight there?

<comment><USER12> You don't get it, sorry. Not in a mean way. I just like to learn about things I do not like, because sometimes I change my mind. Forking a repo means cloning it to my local network because of some automation I have, and I learn applications by playing with code.

</comment></comment></comment></comment></comment><comment><AUTHOR> Hi guys! Thank you for enjoying my little project! Please to add new books just follow this instruction ([https://github.com/devfreebooks/devfreebooks.github.io#how-t...](https://github.com/devfreebooks/devfreebooks.github.io#how- to-add-books)). This is a old project which I'm reviving it, so there are some old ebooks which I will remove or update links soon. Thanks!

</comment><comment><USER13> FireFox OS is a dead project and can be safely removed from the list.

<comment><AUTHOR> All firefoxOS was removed minutes ago, thanks for the feedback!

<comment><USER14> for those interested, here are the links to the books that were removed:

[https://leanpub.com/firefoxosinaction](https://leanpub.com/firefoxosinaction)

[https://leanpub.com/quickguidefirefoxosdevelopment](https://leanpub.com/quickguidefirefoxosdevelopment)

[https://leanpub.com/buildinggamesforfirefoxos](https://leanpub.com/buildinggamesforfirefoxos)

</comment></comment></comment><comment><USER15> Love this idea :).

I would suggest making submitting a book easier through an online form, though. The process of forking, editing a raw JSON file, and submitting a pull request seems a little primitive, and has a high cost to those who want to contribute.

Thank you for your time and energy making this resource!

<comment><USER16> Perhaps the barrier to contribution aims to act as a filter against poor/troll contributions.

Also the necessary skills to submit a book overlap a lot with the skills of the people who might be interested.

<comment><USER17> Really interesting to reflect on the fact that a lower barrier of entry is not always equal to a better choice. There could be a lot of philosophy around this subject, leading us to: should voting be constrained by technology or knowledge of some sort? Is the action motivated by knowledge better to the uninformed one? Sorry for all this off-topic but it is kinda related. I would really love to hear your opinions on this, thanks.

<comment><USER18> No. If unreasonable limits are put on voting, people will find other, more destructive ways to "vote". Every government is eventually a democracy, in the sense that if you rule against your citizens' wishes for long enough and they aren't allowed to vote, they will try to kill you or overthrow you. It just isn't very practical to rule without the consent of the governed.

> Is the action motivated by knowledge better to the uninformed one?

Well yes, obviously, but it's better to try to force people to be informed than to ignore them. As you may have noticed, people don't like being ignored.

<comment><USER17> And what would happen if the ones in power are the first interested in having misinformed population so achieving power is easier for them in the end?

</comment></comment></comment></comment></comment><comment><AUTHOR> A lot of users using DevFreeBooks, thank you guys! [https://twitter.com/crp_underground/status/79643077435434188...](https://twitter.com/crp_underground/status/796430774354341888)

</comment><comment><USER19> I found in a quick google search: [https://tfetimes.com/free-c- books/](https://tfetimes.com/free-c-books/)

Maybe it's something for a DMCA takedown, but it doesnt look like the average pirating website(i surely dont know how they look like, was never on one, i swear!)

EDIT: Please elaborate why that get downvoted. I seriously dont know. I could understand, if it gets FLAGGED, but... it didn't.

</comment><comment><USER20> Whenever I need to find resources for anything programming related I google

"awesome WHAT_I_NEED"

find the awesome git repo and follow the links,

if I find anything interesting I search for the link on hn and reddit and try to see if there are any discussions based on the link.

profit??

</comment><comment><USER21> Should probably remove famo.us as a resource. They've rebranded a little while ago.

<comment><AUTHOR> I removed minutes ago, thank you for the feedback!

</comment></comment><comment><USER22> Great resource! I hope it grows to be a huge collection indeed. Also I hope it'll manage to avoid all the potential legal problems when people (knowingly or unknowingly) start submitting books that are not actually freeware.

<comment><AUTHOR> That's the idea! Grow the list only with free books (piracy won't be accepted).

</comment></comment><comment><USER23> Direct link to the repo if you also want to star it.

[https://github.com/devfreebooks/devfreebooks.github.io](https://github.com/devfreebooks/devfreebooks.github.io)

</comment><comment><USER24> looks like getting started with django isn't a thing anymore

<comment><AUTHOR> This link was fixed minutes ago! Thanks for the report!

<comment><USER24> [http://gettingstartedwithdjango.com/en/lessons/introduction-...](http://gettingstartedwithdjango.com/en/lessons/introduction- and- launch/?utm_source=devfreebooks&utm_medium=medium&utm_campaign=DevFreeBooks)

doesn't appear to resolve.

</comment></comment></comment><comment><USER25> First/Second book in nodejs link broken for: Learn to Create Node.js Applications from Scratch

<comment><AUTHOR> Thank you for the feedback!

</comment></comment><comment><USER17> Could be great to add 'Share by email', with the book directly attached.

<comment><AUTHOR> Cool idea! I will look for a snippet code to add the email share, thanks!

</comment></comment><comment><USER26> Nice resource, any reason it's missing C++ books?

<comment><AUTHOR> Feel free to add all free C++ books you have :)

<comment><AUTHOR> Now you can submit into this form: [https://docs.google.com/forms/d/e/1FAIpQLSeXsmlLo3S7lJF82LGT...](https://docs.google.com/forms/d/e/1FAIpQLSeXsmlLo3S7lJF82LGTOMoMpA4vg_T38Ez47gQoU6P6KaFwQg/viewform)

</comment></comment></comment><comment><USER27> Not really a collection, but agregator</comment>


Ask HN: Is there a "learn Linux the hard way"? - <AUTHOR> I've been a hardcore Windows user for far too many years, and I'm quite uncomfortable working on Linux. I've installed Ubuntu several times throughout the years, but never got too far with it: most of my time was figuring out why video card drivers wouldn't work, what latest update broke something and how to get my 2nd monitor to be used.
It'd like to address my comfort levels though, and perhaps make a permanent switch to the OS for everything but the Windows-only apps. As a software engineer I'm not too averse to learning things the hard way, and I love the nitty gritty technical details. I couldn't locate anything like a "learn the hard way" approach to Linux, and was hoping that you would be able to point me in the right direction.
Are there books / online tutorials / anything else that are great for people just starting out, but not afraid to get their hands dirty?
Thanks!!! <comment><USER2> Back in the day I found installing Gentoo from stage 1 and going through the (now significantly obsolete) HOWTOs of The Linux Documentation Project to be very educational.

<comment><USER3> That's how I learned too! I haven't looked at it in ages, but assuming it's still maintained, got through the Gentoo Handbook at <http://www.gentoo.org/doc/en/handbook/> and do all of it. Research anything you encounter that you don't undertand, rather than just following the directions blindly, and you'll end up knowing more than many casual linux users.

</comment></comment><comment><USER4> Creating such a guide would be difficult since the Linux ecosystem is so large.

Here is a good blog post by one of the developers of Mono.

<http://tirania.org/blog/archive/2011/Sep-06.html>

You might be better off running Linux in a VM so that you don't have to ditch Windows completely. The command line is a better way to learn Linux as opposed to the GUI. How much have you really learned about Windows via the GUI?

First focus on getting the basics down. Even the basics can get not so basic once you get deeper into the command line tools.

Bookmark some good cheatsheets for commands and then make a point to pick up something new in a few areas every day. For example, you can pick up Vim in a couple of weeks but mastery is a lifetime journey. The way to get better with Vim is to spend time every day learning something different and incorporating that into your workflow. Otherwise you will never get far from being a beginner. Many Linux tools are like that.

Don't worry about getting crazy with building your environment with Arch or Gentoo until you have become strong with the basics. Also wait until you have a lot of time on your hands. It's not an easy journey. Better to start with something that you can be productive with right away.

</comment><comment><USER5> Linux From Scratch (probably the hardest reasonable way) <http://www.linuxfromscratch.org/>

</comment><comment><USER6> I think the quickest way of learning it is to make something dependent on it. With newbie Linux installs, something is going to break on you, and you have to fix it. Whether that's flash player, a dependency hell, or messing up a critical config, something is going to go awry before you can do your normal work. Yes it takes longer, but you're learning.

In the year prior to really learning Linux I had tried to install Linux in a VM, dual boot, etc. It just didn't work out because I didn't have anything to "do" in it. It could be different that you're a software engineer, but while my friends were scripting the automatic download of their torrents or piping their TV tuner through a windows VM to feed it back into mplayer, I didn't have a use case. So find your use case and force yourself to context switch OS's. I did it when my job switched me from primary Windows admin to secondary *NIX admin

</comment><comment><USER7> When I got into Linux I bought one of those thick Red Hat Linux Bible, and read it from cover to cover... well maybe not every word but skimming each section gave me a very good insight on what the file system was, key programs, how the OS works with daemons, popular services Linux can run, etc. With having that background of what is what, it was much easier to poke around and not be too afraid of it all.

Also as a suggestion is set up Linux on a spare PC and beat on it... my first installs were usually the works, all the packages that sounded cool then filter down on subsequent re-installs as you get an Idea what you want.

If you want quick answers to your questions stick with popular distros like Ubuntu, Fedora, Suse, Debian - with most of those you can get what you need to know with a well phrased google query.

</comment><comment><USER8> My tip would be to get VirtualBox or VMWare Workstation, and run your choice of Linux on it in fullscreen. There are two things that are annoying when learning Linux:

1) dealing with hardware issues

2) dealing with updates that break stuff

Virtualization solves both of those, at the cost of a little performance. The nice thing about VM's is that the virtual hardware is always the same and generally well tested (no hardware issues). And if you break stuff, you can roll back changes (VM snapshots). Both VirtualBox and VMWare have full screen modes and support for dual monitors out of the box.

Also, make sure you get a server as well and learn to administer it it from the command line. It's a great way to keep learning more.

<comment><USER9> If you were going to learn Linux the hard way, wouldn't you want to jump right in with a dual boot?

<comment><USER8> A VM is for most purposes identical to a dual boot setup, except for the part where you have hardware incompatibility issues and/or break your system. If you want, you can ignore the option of going back to a snapshot and stay in hardcore mode figuring out things, but you also get the option of reverting and learning from the experience. Less frustration = more fun = more motivation = more learning.

</comment></comment></comment><comment><USER10> Try the Survival guide for Unix newbies <http://matt.might.net/articles/basic- unix/> and follow up with Settling into Unix <http://matt.might.net/articles/settling-into-unix/>

</comment><comment> the-come-ons If you really don't mind getting your hands dirty, I recommend: <https://wiki.archlinux.org/index.php/Beginners%27_Guide>

My Linux skills have improved and I have really enjoyed using Linux as my desktop and dev environment since learning by using Arch.

<comment><AUTHOR> Thanks for the tip! Ignoring the educational aspect altogether for a second, what does one lose by using less glamorous / widely popular distros of Linux such as the one you recommended? Is there generally a good reason to stick to something like Ubuntu, or does it really not matter?

<comment> the-come-ons I feel there is more freedom to choose exactly what system I want to create for my needs with Arch over Ubuntu. I love the Arch community and I enjoy using the forum system more than Ubuntu's. Also, I hang out in the #archlinux channel and people are super friendly and helpful!

Ubuntu tends to be recommended for novices coming from Windows or Mac who are also unsure of the command line. My brother installed it after he purchased a cheap laptop. He came from Mac OS X and fell in love. After learning more, he installed Mint and really enjoys it. He is programming now! Obviously Ubuntu is for advanced users also. It just so happens that it is accessible to beginners as well which is great!

When switching distros, say from Debian to Arch, you should embrace the idea that fundamentals are completely different. Package management, for instance, must be re-learned. And the way daemons and modules are initialized and configured is different and plenty of other things! You are going to lose context and that can be the most frustrating part of switching. If you can overcome that and succeed at the new tools, you will have gained more skills.

The great thing about Linux is that it is free software. I love to experiment with Virtualbox and lots of distros for fun. I would encourage you to try a few, a couple non debian based, and see if you enjoy them more.

</comment></comment></comment><comment><USER11> tldr: rtfm!

(maybe read about the core principles of unix first. the links suggested by other commentators look good.)

learn how the documentation provided with your linux install is organized: man, info, apropos, whatis. the more comfortable you get with the built-in documentation, the more you'll find that most of your questions will be answered there. it takes a while to get used to it though. understanding the structure of the docs helps a lot with where to start reading. (did you know that the man page browser has a built-in string search?)

next step: dig into online documentation resources. start with the material curated by the distro project of your choice. don't forget wikipedia, some of their free software articles are nicely structured, concise and very well interconnected. you'll find plenty of useful links there, too.

third step: learn how to get the questions you can't answer yourself solved quickly by the community. "how to ask questions the smart way" by esr comes into mind. the way you asked your question here suggests that you might have read that already. anyway: for almost every question there are the right persons to ask and the right way to do so. mailing lists are good, but may not be fast enough. on the other hand, irc culture is a little rough sometimes, not everybody is a catalyst on freenode. look that up, there's a nice article about how to communicate on irc. if you know how to ask in which channel, irc is a fast resource.

when you get used to the culture of documentation and community, the gap between user and developer gets really small.

linux is transparent. learn how this transparency is organized and communicated.

that might sound easy, but it _is_ the hard way.

if you like the experience, consider writing on the web about your very own way of learning linux. or put some time into improving the resources you were using. that's a fun way to say thank you. :-)

have fun!

.~.

</comment><comment><USER12> Check out command line crash course by Zed shaw <http://learncodethehardway.org/cli/book/>

</comment><comment><USER13> The hard way.

Hmm I would take one of the stripped down command line only distros and build it up from there so that you get into the nitty gritty stuff.

Something like this: <http://distro.ibiblio.org/tinycorelinux/welcome.html>

Put it on a 128meg usb stick and have at it.</comment>