Ruby Tips Part 4 - <AUTHOR> http://globaldev.co.uk/2013/10/ruby-tips-part-4/ <comment><USER2> This series is invaluable. I have been programming in Ruby professionally for over 7 years and did not know about Array()! Since then I have been joyfully combing through my repos and eliminating literally dozens of

      obj = [obj] unless obj.type_of?(Array)

Integer() was another head-slapper that I can't believe I didn't know. And the series is full of them.

Thanks very much to the Author(s)!

      TypeError: can't convert nil into Author

<comment><USER3> Be careful with Array() since it uses #to_a method whenever it exists. As such, this trick is unsuitable for array of hashes (in any version of ruby) and strings (in ruby 1.8).

Other Enumerables might make for unpleasant surprise too.

Old mootools had $A method (called Array.from now) which did exactly what you expected.

<comment><USER4> If you already use ActiveSupport, then you can use Array#wrap [http://api.rubyonrails.org/classes/Array.html#method-c- wrap](http://api.rubyonrails.org/classes/Array.html#method-c-wrap)

<comment><USER3> This is exactly what I meant! Thank you!

</comment></comment></comment></comment><comment><USER5> A lot of that stuff comes with the dynamite combination of pry and its various plugins: pry-debugger (gives you next, step etc), pry-stack_explorer (go up and down the call stack) and so on.

I implore you to check them out if you are a ruby developer. I can't remember how I got work done without them.

[http://pryrepl.org/](http://pryrepl.org/)

[https://github.com/pry/pry/wiki](https://github.com/pry/pry/wiki)

PS. to make your life even easier, hook it up to awesome_print. Heaven.

<comment><USER6> Glad to see someone mentioned these!

Making your own irb console is dead easy:

myfile.rb

require 'pry' class Stuff def initialize binding.pry end end

Stuff.new # diy console

Also, awesome_print is a lifesaver as well...

One tip I do have is: be careful when "prying" you don't want to accidentally ship a "binding.pry" into production (*I did it to our staging server once-- both hilarious and stupid)</comment></comment>


Go It Alone - <AUTHOR> http://www.brucejudson.com/frombook.html

<comment><USER2> Contrary to what the title may hint at, this book is not about starting a business alone. It does (correctly in my opinion) encourage you to start with a small team.

Thanks for putting extensive content out there for free (it's funny to watch Google AdSense trying to sell me on every possible small business gimmick, page after page)</comment>


The Us's Spy System of the Future – It's Sentient - <AUTHOR> https://www.theverge.com/2019/7/31/20746926/sentient-national-reconnaissance-office-spy-satellites-artificial-intelligence-ai <comment><USER2> > Sentient is (or at least aims to be) an omnivorous analysis tool, capable of > devouring data of all sorts, making sense of the past and present, > anticipating the future, and pointing satellites toward what it determines > will be the most interesting parts of that future.

LMAO. My tax dollar being wasted in real time. In addition to going completely to the contrary of the unix philosophy, the massive inefficiency of the government and lack of talents will create a clusterfuck that would make Oracle Database look like best coding practice. The spokesperson judging by content know precisely 0 about how the thing would actually work (provide that it _will_ somehow work) technically.</comment>


Why I Identify as Mammal - <AUTHOR> http://opinionator.blogs.nytimes.com/2015/10/24/why-i-identify-as-mammal/?ref=opinion <comment><USER2> Is it only me or does anyone else not "identify" as anything (expect my individualistic self)?

I'm a man by biological fact, not by identifying as one. Same with race, species, etc. Personally, I find the idea as someone "identifying" as another sex just as ridiculous as a completely white person "identifying" as black. Fact is, if you're white, no amount of convincing, shaming and delusion will change that.

<comment><USER3> _Personally, I find the idea as someone "identifying" as another sex just as ridiculous as a completely white person "identifying" as black_

This isn't a valid comparison, and it's a really shitty thing to say, to boot.

<comment><USER2> Why not? What's the main difference? Are you saying you would find a white person saying they're really black normal?

<comment> atom-morgan > just as ridiculous as a completely white person "identifying" as black

I would say no.

</comment></comment></comment></comment><comment><USER4> Nobody else seems to be very positive on this article, so I'll shoot: This article puts into words something that I've always intuitively felt, and very articulately as well. I think it particularly hits the nail on the head when it notes that "Thinking of ourselves as primates strikes a little too close to home. It's like being told you look like your brother; nobody wants to hear it."

The only addendum I would make is that I feel there ought to be some place in this viewpoint for avians as well; I can't justify it on the basis of biological similarity, but it's something I feel all the same.

<comment><USER5> The mammal and birds that everyone thinks of first are "charismatic". Mammals, especially the young, look cute to us. (Cuteness appears to be tied to neoteny.) You'll note that the three mammals after the primate quote are bear, squirrel, and whale. Two of the three are on the charismatic megafauna list, and squirrels are often considered cute.

Later on there's "pigs, whales and naked mole rats". Of the mammal species listed, only is an unfamiliar animal, and rarely considered cute.

Too bad more non-cute mammals weren't on the list. How many people think of the promiscuous monkey, or the Philippine tarsier - both primates - as being 'close to home'? What of bats, and the brown rat?

I think most people would identify with many avians before identifying with a bat.

<comment><USER6> Not all humans are cute, either.

<comment><USER5> Point taken.

I looked at a list of "ugliest mammals". The #1 of some of the lists was Sam the Chinese Crested dog. See [https://en.wikipedia.org/wiki/Sam_%28ugly_dog%29](https://en.wikipedia.org/wiki/Sam_%28ugly_dog%29) .

</comment></comment></comment></comment><comment><USER7> There's a book called Five Kingdoms which is a listing of every phylum of life on earth, with pictures and descriptions:

[http://www.microscopy- uk.org.uk/mag/artmay98/fiveking.html](http://www.microscopy- uk.org.uk/mag/artmay98/fiveking.html)

It's fantastic.

Years ago, I got a copy, and read it from cover to cover. After however many pages of bacteria and protoctista, dozens of phyla of weird, unimaginable, almost alien single-celled organisms, I eventually got to the animals. The first phylum is the placozoa, these little guys:

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

And I felt a surge of emotion. Here, finally, was something like me! After visiting the extraordinary world of single-celled life, placozoa seemed like family.

</comment><comment><USER5> > the mammalian talent for live birth

Monotremes are egg-laying mammals so the author is identifying with placental and/or marsupial mammals, and not mammals as a whole.

("Technically correct - the best kind of correct.")

<comment><USER8> Some snakes give birth instead of laying eggs.

<comment><USER5> Other criteria exclude those snakes. The author said:

> But there is a danger in pushing the borders of affiliation so far out that > they no longer have any resonance. Placing an emphasis on our mammalian > identity is a reasonable compromise between a restrictive anthropocentrism > and a vapid all-inclusiveness.

> Mammalian awareness embraces our affinity with our hairy and milky fellow > mammals,

Snakes neither have hair nor provide milk to their young.

<comment><USER8> Uh, yeah, I realize that. I guess maybe I should have said something like "Nifty off topic observation/ did you know?" kind of thing. (Or, you know, kept my mouth shut.)

</comment></comment></comment></comment><comment><USER9> The author says they chose to identify as a mammal, but I'm pretty sure if you are choosing then it's not real.

<comment><USER5> Do you mean that these are all granfalloons, and fundamentally meaningless?

Otherwise, the type of identity here is the same as the other identify choices mentioned: race, gender, "religion, political party, sexual orientation, even species". (I assume the last includes furries.)

The problem of course is that most people consider some of those to be a karass, making them real enough in our consensus model of the world.

<comment><USER10> The choice to identify as as a mammal may be a 'bad faith' choice in the Sartreian sense.

<comment><USER5> Now we just need dibbsonline to clarify.

</comment></comment></comment></comment><comment><USER11> I find it ironic that in order to remove the false idea of human exceptionalism, a human does what no other species is capable of doing (self- identify as something).

This is not about fair treatment of animals or a "realistic" view of our place in the world. This is about abdicating responsibility. Refusing to admit that human beings are exceptional doesn't elevate the value of animals. It lowers our own. It means that, as mere mammals, we are not reasonably bound to any sort of behavioral code or sense of virtue (including ethical treatment of our kindred animal counterparts). Like it or not, we have the unique ability to make or break this planet and the only way to save it is to hold ourselves to a higher standard, not a lower one.

<comment><USER5> How in the world does this raise or lower our standards?

I've heard similar arguments before. In fact, we have a long history of people arguing for exceptionalism, only to find that those views are not worth believing.

We should not grant voting rights to women because rather than elevating their position it will lower the exceptional position of men.

We should not grant freedom to black slaves because rather than elevate their position it will lower the exceptional position of white people.

Atheists and apostates reject the the behavioral code set by divine sources and think that humans are mere animals, not exceptional beings endowed by divine sources as good stewards of the Earth. They abdicate responsibility so must be punished.

We are at the center of the universe, and those who say the Earth revolves around the Sun are trying to destroy our exceptional place in the cosmos.

Your argument sounds equally as faulty as those sketches.

</comment></comment><comment><USER12> Relevant: [https://en.wikipedia.org/wiki/Minimal_group_paradigm](https://en.wikipedia.org/wiki/Minimal_group_paradigm)

</comment><comment><USER13> I don't think this article is relevant or convincing. None of the arguments were particularly good and the author gave me no reason to care. I expect a higher standard of quality on hacker news.

</comment><comment><USER14> Is this supposed to illustrate the ridiculousness of SJWs and their views on self-identification? If so, it doesn't do it for me. I'm left wondering what is the point of the article.

<comment><USER15> Sufficiently advanced SJ is indistinguishable from parody.

</comment></comment><comment><USER16> I identify as John.

<comment><USER5> (tongue-in-cheek humor ahead)

Freds have organized for at least 15 years, with yearly marches in Miami, and slogans like 'Fred Is Not a Four-Letter Word,' and 'Better Fred Than Dead.' \- [http://www.miaminewtimes.com/calendar/king-mango- madness-635...](http://www.miaminewtimes.com/calendar/king-mango- madness-6359454)

The Stephen/Steven/Stephanie/Esteban/s etc. organized to support evolution. [https://en.wikipedia.org/wiki/Project_Steve](https://en.wikipedia.org/wiki/Project_Steve)

I'm sure if you look hard enough, you can find a group of like-minded people who identify as John.</comment></comment>


How The iPhone Target Market Can Expand 7x - <AUTHOR> http://blogs.barrons.com/techtraderdaily/2010/03/24/apple-how-the-iphone-target-market-can-expand-7x/ <comment><USER2> Pre-paid iPhone that only does data through WiFi? Gads, I've been trying to find something like that for over year now.</comment>


Error 404 (Not Found)1 – Google fix the typo - <AUTHOR> https://www.google.com/doesnotexist <comment><USER2> It's not a typo.

[http://knowyourmeme.com/memes/the-1-phenomenon](http://knowyourmeme.com/memes/the-1-phenomenon)</comment>


"How I Successfully Made $0.20 from My First App in a Month." - <AUTHOR> https://obviousturtlegamesblog.wordpress.com/2016/10/22/how-i-successfully-made-0-20-from-my-first-app-in-a-month/ <comment><USER2> Why do people have to blog about everything - as if it is meaningful? Nobody cares. Maybe in three months you can say you got 1000 dollars and then the history will start to get interesting.

<comment><USER3> Personally, I found it interesting. Not because the story was particularly unique, but because it was a nice counterpoint to the hordes of posts about how their author made thousands/millions from whatever random project and is now about to buy a yacht in the Bahamas because of it.

It helps you realise that no, not everyone in the world is succeeding at everything they try (regardless of how much social media, blogs and Medium make it appear so) and that your new project, startup or app might just as easily fail as it could succeed.

<comment><USER2> Right, because the best way to fight a hordes of posts is with another horde of posts (with less individual utility!). What you say and what OP wanted to say is only the obvious. Alienate people with more clickbaits and shit stories isn't going to fix it.

</comment></comment></comment><comment><USER4> but isn't that violating Adsense ToS and forfeiting your money right there?</comment>


Any student can be a 'math person' - <AUTHOR> https://www.educationdive.com/news/with-the-right-support-any-student-can-be-a-math-person/552196/ <comment><USER2> ... so long as they aren't afraid of the social stigma of being mistaken for an aspie.</comment>


Thieves of Experience: How Google and Facebook Corrupted Capitalism - <AUTHOR> https://lareviewofbooks.org/article/thieves-of-experience-how-google-and-facebook-corrupted-capitalism/ <comment><USER2> _" Anyone who tries to remove a pre-installed Google app from an Android phone, for instance, will likely be confronted by a vague but menacing warning: "If you disable this app, other apps may no longer function as intended." This is a coy, high-tech form of blackmail: "Give us your data, or the phone dies."_

They're bluffing. Turning off Google Drive, Google Duo, Google Gmail, Google Play Movies and TV, Google Play Movies, Google Play Music, Google Play Store, Google Keep, Google Maps, Google Photos, and Google YouTube doesn't do anything other than turn off those user-facing apps. Google Play Services is the only one that affects other apps. Then install F-Droid and install open source replacements.

<comment><USER3> Don't overestimate the customer.

"I don't like Google Maps and I deleted it. Now I can't see the map! Fix it now!"

"I see. There are competing map services available."

"That's not the map I want. I want the map!(Google Maps)"

"You can use a browser."

"Browser? What is it? I simply want to use map!"

"If you really wan to use the Google Maps from the app. Then you have to install the app called Google Maps"

"I don't understand you! Speak English! FIX IT! FIX IT!"

<comment><USER4> > I don't like Google Maps and I deleted it. Now I can't see the map!

i mean, is it common for a user to hold contradictory thoughts like that?!

<comment><USER5> I see you've never worked a helpdesk. :)

(Depressingly, yes. PEBKAC is the most common diagnosis and people get really angry about it.)

<comment><USER6> For those curious:

PEBKAC == "Problem Exists Between Keyboard And Chair",

means you, the user, are the cause of the issue, not the hardware or the software

<comment> dane-pgp For those who prefer a slightly more pleasant looking acronym, there is also:

PICNIC == "Problem In Chair, Not In Computer"

<comment><USER6> I like that better. That said, imagine the office:

— "It's PICNIC again, guys"

— _groans all around_

<comment><USER7> We had PICNIC back in the day in the UK too, plus "ID ten T" often went on the notes.

ID10T

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I'm a bit torn on this - for a long while, I saw Google as trying to promote "the right way" of doing things, and only getting frustrated and doing it themselves after handset manufacturers and cell providers kept doing it wrong. I mean, was the original Nexus anything other than "look everyone, this is how it SHOULD be done, but we have no interest in actually being the ones to do it"?

That doesn't deny that Google has done a lot I'm not comfy with - but I feel like had these other players done the right thing and not refused to update OSes, if they had embraced open APIs, then Google wouldn't even have been tempted to do some of the particular evils the article discusses.

<comment><USER9> the most random thing ticked me from Google good toward Google evil yesterday when I discovered an Android app can choose whether or not youre allowed to take a screenshot. (I'm normally iOS but have a Pixel 2 for testing)

Apps imo should not have that control. It's my phone. I should be able to capture what I want. I shouldn't need to get out another device to take a picture of a bug or record a transaction for safe keeping.

That Google chose that solution struck me as heading down a Black mirror like path. I can imagine it won't be long before AI will decide if you can even take a picture of something. Someday we'll augment our eyes and they'll decide what we're allowed to see.

In their defense apparently they were trying to prevent background apps from spying on your screen. They just chose the wrong solution IMO. A solution I think will end up having far reaching consequences as a precedent of control.

<comment><USER10> I agree, but this battle has already basically lost because of DRM requirements for streaming video: I don't think you can take a screenshot of a Netflix or Amazon Prime video on any platform.

<comment><USER11> I don't think it's too hard on Windows...

<comment><USER10> Hmm, my impression is that they will only play video if you have a secure connection from the graphics card to the screen. So, unless you have access to a HDCP stripper, I don't think there's any way to tap the video stream.

<comment><USER12> This is wrong. It's perfectly possible to screenshot your netflix stream.

</comment></comment></comment></comment></comment></comment><comment><USER13> I think it's a big mistake to blame Google and Facebook. They are just the latest symptoms of a long term trend. I think the real corruption started sometime in 70s or 80s when it became acceptable to declare that a company has no other obligations than to their shareholders.

<comment><USER14> [https://en.wikipedia.org/wiki/Milton_Friedman](https://en.wikipedia.org/wiki/Milton_Friedman) and the Chicago School of economics are the nexus of the change you're describing.

If you're sort of liberal, it's a real mind bender to listen to Milton's speeches on YouTube. It was the first time I really felt exposed to the philosophical core of the various negative things I thought were random externalities of 'capitalism'

<comment><USER15> I guess ending compulsory military service, safety inspecting our food and opposing entirely state-controlled education systems are the negative core of capitalism then. Who knew.

<comment><USER15> I'm not agreeing or disagreeing with any expressed opinions on Friedman, but it's interesting to see someone criticized by political opponents on both sides who fundamentally misunderstand everything he said and stood for. This persisted through his whole life and obviously after his passing as well.

At his core, Friedman was fundamentally about a person's right to choose the direction of their own life. That's it -- really all you have to understand about the guy.

The GOP seems to love Friedman right now, even though they don't understand him and that makes him an easy target for the opposition. In truth his arguments were fundamentally no different from his oft-adored 'liberal' peers: Henry Simons, Ludwig von Mises, and Friedrich von Hayek. Economic freedom is essential to attain political freedom.

<comment><USER16> except, "my freedom ends where your freedom begins", so there are limits. And if we translate that to the real world all kinds of sticky "conflicts of freedom" emerge, especially between businesses and society.

<comment><USER15> That's what all the lords and kings used to say. "This freedom nonsense is too tricky for you all to manage yourselves, let us hold on to it and take care of it for you."

Freedom is a messy thing. It not only needs to be used carefully, but nurtured. Misuse of it does not mean we should have less of it.

<comment><USER17> That's very dangerous what you are saying right there. It is more then obvious that your freedom to walk in my street's block, to exist(your freedom), depend directly on the limitation and curtail of my freedom to shoot you with my shotgun. Your freedom is killing my Total and Absolute freedom. Do you want to give me Total freedom?

<comment><USER15> You don't have the freedom to shoot people with your shotgun.

Framing an argument for freedom as an argument for anarchy, as an excuse for curtailing freedom, is exactly what my comment was railing against in the first place.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> Worth reading even for those who already read the NYT review, as it nicely explains the timeline of how we got into this situation.

Fully agree that Google and Facebook are mainly to blame. As an example, Google's success in surveillance and pacifying critics through open source trinkets almost definitely convinced Microsoft to try its hand at the same game. And now the two biggest operating system developers are spying on their so-called customers.

<comment><USER19> Do you see Google and Facebook as equals in terms of badness?

Honestly, I've always perceived Google as less insidious than Facebook. To me FB is more in your face, channeling your behavior. Google seems more passive and delivers more utility.

What am I missing?

<comment><USER20> In my view, Google is far worse. The company took entire internet and bent it to its advantage. It has monopolized search and delivery of information, and it has monopoly on digital advertising. It's actually destroying creation of content online, because there is no money left to creators, such as journalists, bloggers, etc. There is a reason why The Guardian has donate button under its articles: it's one of the many outlets that is struggling because of the unethical black hole called Google.

PS I just came back from CES as a journalist. Tried to get in touch with Google folks, and they are literally behind the walls, unavailable for interviews. It's all hush hush. Security at Aria suites where they were present. No access whatsoever. Their main booth at LVCC was staffed by temps hired in Las Vegas, whose only job was to jump and shout Hey Google! Truly dystopian.

<comment><USER21> When were "journalists, bloggers, etc." ever making money by creating content online? I don't think Google has anything to do with them having a big problem doing this successfully.

<comment><USER20> Journalism is a profession, and a very important one.

<comment><USER22> For the importance to hold true, the profession as a whole must solve the Gell-Mann Amnesia Effect.

[1] [https://en.wikipedia.org/wiki/Gell- Mann_amnesia_effect](https://en.wikipedia.org/wiki/Gell-Mann_amnesia_effect)

<comment><USER20> Wow, when statement that journalists are important is downgraded, we truly live in dystopia.

<comment><USER23> Even if you agree with the statement, it was a meaningless reply to the question asked.

<comment><USER20> Journalists are professional and have to be paid. And they are not being paid, because Google is an unethical business. And that's why your local newspaper is struggling and why content is not created on internet and why there is no VC investment in the media and content. That's the answer.

<comment><USER24> You still have not explained how Google is responsible for the failure of online newspaper business models. If google did not exist, what would these newspapers be doing differently that would keep them profitable?

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER25> I m sure if the book is as described, it's going to be very popular with the HN crowd, however one has to wonder if what is claimed is true. If the ability to mold the behaviors of people has increased , then why were people spending a lot more in the 1920s for advertising than they are now[1]? Why did online ad spending surpass TV only in 2017, and TV advertising keeps rising as well[2]? If anything, the conclusion is that the effectiveness of ads has _dropped_ , so publishers like google have to scrape the bottom of the behavioral barrel to make it through. Also, even for google, the bulk of advertising income is from search results, not from 'evil' behavioral tracking.

1\. [https://en.wikipedia.org/wiki/History_of_advertising#/media/...](https://en.wikipedia.org/wiki/History_of_advertising#/media/File:Advertising_as_a_percent_of_Gross_Domestice_Product_in_the_United_States.svg)

2\. [https://www.smartinsights.com/advertising/online-ad-spend- ov...](https://www.smartinsights.com/advertising/online-ad-spend-overtakes-tv- ad-spend-globally/)

<comment><USER26> Because in 1920 one ad reached less people and required more effort to produce and competition now is fierce so prices had to drop?

The stats you show does not have all that much to do with ease of convincing someone and could be explained by millions other ways.

<comment><USER25> so you think the market is wrong about the value of advertising? if you have tried online advertising perhaps you know how terribly inefficient it can be.

<comment><USER26> Low price means a lot of competitors and cheap to be made. High price means expensive to make or scarcity.

Market is right, but price has little to do with how easy it is to convince people. Mineral watter is cheap and it is not because it is not valuable. It is because there is ton of it and if you sell it expensively, I will buy cheaper one.

<comment><USER25> this isn't about the price of ads however, but about the total amount spent on advertising compared to gdp

</comment></comment></comment></comment></comment><comment><USER27> I'm a bit concerned about how much data Google has on me and I do think Apple is genuinely more concerned about user privacy. But what's the difference in practical terms really? Google uses my data to target ads at me but doesn't actually give any of my data to its ad-buying customers. Apple doesn't do this but is obliged to turn over my iCloud data to the government with a subpoena. Since this is really the scenario we should be most concerned about and since all tech companies are required to comply with the law it seems to me that the only way to have any meaningful online privacy is to not use cloud services from any vendor.

<comment><USER28> I honestly don't believe Apple is much more concerned- I think they've seen the negative sentiment towards FB and Google and have decided to seize the moment by highlighting that they are a hardware company, which they've always been. It's easy to preserve privacy when you make most of your money selling luxury hardware.

<comment><USER24> > _" they are a hardware company, which they've always been."_

I don't really buy this. If it were true, they'd have no reason not to open up more of their software. Why not take the Hack out of Hackintosh, distribute the OS freely and let anybody run it on whatever hardware they please? The answer is obvious: their software drives purchases of their hardware. People buy Apple hardware because they desire Apple software. You'll be hard pressed to find somebody who buys a macbook but then primarily runs Windows on it.

It's not a matter of Apple "hardware company" or a "software company" that's important here, in this context. It's Apple being a "hardware or software or both" company, while Google and Facebook are neither hardware nor software companies. They're _advertising_ companies.

</comment></comment></comment><comment><USER29> It really speaks to the great improvement of the human condition, that the big complaint about the top companies of today is that they are showing us personalized ads, rather than burning the earth or poisoning babies.

<comment><USER30> You say that like top companies aren't doing either of those things anymore. They are very much doing those things.

<comment><USER29> Good point. It's almost as though the tendency of activists to punch up at The Man _du jour_ results in their own priorities reconfiguring in opposition. Seems a little myopic to me. Maybe we should be celebrating these companies for finding a way to generate economic growth by increasing the efficiency of the economy, instead of putting more carbon in the atmosphere or enslaving people.

</comment></comment></comment><comment><USER31> > Without permission, without compensation, and with little in the way of > resistance, the company seized and declared ownership over everyone's > information.

No, Google has permission - it's given when you click I Agree in Android, or when you sign up for a Google account, or when you continue to use a website that has a 'terms of use' page.

<comment><USER25> in reality the permission was given the moment that people buy the phone. Nobody is going to realistically buy a phone and then deny the terms. TBH the idea that users consent because they click a button is bogus unless something like money is at stake.

I think they should try adding warning signs to phone packages, like they do in cigarettes, "tracking inside" , and see how this affects consumer choices.

<comment><USER2> _In reality the permission was given the moment that people buy the phone._

Not for Google. Permission is given when you agree to sign up for a Google account. Google tries to trick you into signing up by using a dark pattern. Just click "Later", then remove the signup app. I've been doing that for years now on Android phones.

</comment></comment></comment><comment><USER32> People on these discussions should stop playing these games of ignorance or shifting blame to the user and acknowledge the pervasive industry wide culture of data collection, open deception and fraudulent help messages deployed ie 'can we do x with your data to provide a better experience' conveniently forgetting to mention the full scope and what else they are doing with the data. This is fraud.

If you think users are so stupid then why even play these games? There are no regulations, no one cares about user privacy and everyone's sold out, fair enough but being 'coy' about it makes a mockery of informed discussion.

</comment><comment><USER33> >Many people, it seems clear, experience surveillance capitalism less as a prison, where their agency is restricted in a noxious way, than as an all- inclusive resort, where their agency is restricted in a pleasing way.

The possibility that a free, democratic publishing platform increases the agency of the average citizen is not permitted here.

<comment><USER18> The notion that any of those platforms is democratic is laughable. They are heavily censored for starters, among other things because they were cesspools of manipulation (hello election manipulation scandal!) and bullying/violence (hello Myanmar genocide!).

They're also intentionally filtered at the behest of the owners themselves and tuned to elicit user dependence on the platform.

Their cost is just hidden, they're not free.

So this possibility _is_ permitted for about 5s, the time required to think about it a bit and then reject it as totally unrealistic.

<comment><USER33> >The notion that any of those platforms is democratic is laughable.

They are democratic as publishing and research platforms because every citizen has equal access to them, subject only to a device and internet connection. Only 20 years ago, the ability to publish and spread an opinion was heavily restricted by your power and financial status. With the exception of countries with good public libraries (a small minority of the world) the same was true of libraries. You're comparing to a non-existent utopia, not actual universes that have ever existed anywhere.

</comment></comment></comment><comment><USER34> It's not a corruption of capitalism, it's just capitalism. They found a market, they sell on that market. They dominate that market.

That's capitalism, no need to make up a new term.

<comment><USER35> Not sure why you're being downvoted. I upvoted you. Those were my exact thoughts when reading. It appears to paint a rosy view of capitalism. As if some pure and moral capitalist rules were in place and they were 'corrupted' by evil Google and Facebook. I also wish we took some responsibility in this whole thing. We've let those companies grow by using their products and services, many times even knowing the personal data they mine. I don't think it's entirely their fault.

<comment><USER36> Most westerners, and certainly visitors to this site, have spent at least the past 30 years in the assumption that neoliberal capitalism marks, as Fukiyama spouted in 1989 as the wall came down, "the end of history". It's becoming difficult to recite why this claim was taken for truth but there was a reason it felt that way.

It's more than just admitting we are wrong. We also have to find a way out, and there isn't one unless we all do it together.

You're exactly right that we urgently need to move beyond the blame and recognize it's up to all of us to get out of this mess.

Historical trajectories point to 2 possibilities for the United States: denialism followed by Fascism, or a miracle followed by socialism (of some degree). The miracle is a shortcut through the contradiction Upton Sinclair articulates: "It is difficult to get a man to understand something, when his salary depends on his not understanding it."

</comment></comment></comment><comment><USER37> > _Under the Fordist model of mass production and consumption that prevailed > for much of the 20th century, industrial capitalism achieved a relatively > benign balance among the contending interests of business owners, workers, > and consumers._

Capitalism is like the presidency, as soon as the new iteration comes along, everybody looks wistfully back to the previous administration.

> _Enlightened executives understood that good pay and decent working > conditions would ensure a prosperous middle class eager to buy the goods and > services their companies produced._

Should I laugh or cry at this? Where were these enlightened executives when...oh, yeah, they were asking governors to call out the national guard to roll out machine guns on flat cars and shoot striking strikers and burn their family's tents.

> _This is not to suggest that our lives are best evaluated with > spreadsheets._

If they were spreadsheets, the implication would be that _someone_ human would eventually look at them. But the whole point is to abstract such away from the human.

I forget where I read it, but someone who studies these things, presented that during the middle ages, the so-called trial by ordeal was really about doing two things, [aka the touching, for example, of a hot iron the accused's arm or palm and then bandaging and seeing if it was healing or pussy after a set number of days] wasn't about belief in some supernatural judgement but a way removing both God and man from the need to make the decision. Really, have we gotten so far away from that?

Also, people downplay Foucault, but I think more and more that might merely because of how topical he is, even after all this time. The panopticon has become unclothed from its steel-and-concrete body to be reborn transcendent.

> _A less tendentious, more dispassionate tone would make her argument harder > for Silicon Valley insiders and sympathizers to dismiss._

Considering where this article is from (and thinking of Wallace Stegner, who was supported by the CIA in regards to the Iowa Writer's Workshop to attack communistic and other such anti-capitalist elements) I can't help but recall a passage in one of Stegner's own books on writing praising the dispassionate, which, along with 'show don't tell' were expressly promulgated to prevent and inculcate writers from undesired politics (and that isn't a joke[1]).

[1][https://www.uipress.uiowa.edu/books/9781609383718/workshops-...](https://www.uipress.uiowa.edu/books/9781609383718/workshops- of-empire)

</comment><comment><USER38> Years ago I thought it was the government that was destroying the internet and the open frontier of human communication. Over the last 10 years I've understood it to be the google and facebooks of the world that have a vested interest in command and control of internet consumers all the while training a new generation to think, act and do it their way.

</comment><comment><USER39> Google and Facebok didn't corrupt capitalism, they embody it.

</comment><comment><USER40> It seems as thought cause and effect are reversed here. It's really capitalism that corrupted Google and Facebook:

> In Google's early days, Page and Brin were wary of exploiting the data they > collected for monetary gain, fearing it would corrupt their project. They > limited themselves to using the information to improve search results, for > the benefit of users. That changed after the dot-com bust. Google's once- > patient investors grew restive, demanding that the founders figure out a way > to make money, preferably lots of it.

</comment><comment><USER41> > Surveillance capitalism's real products, vaporous but immensely valuable, > are predictions about our future behavior

Enough of the juvenile hyperbole. Facebook nor Google sells future predictions of users. Facebook's customers are advertisers. They sell ad placement. Thats a fact, not an opinion or analysis. Why should anyone take criticisms of Facebook seriously from people who don't understand how Facebook even makes money?

They sell ads. There is nothing wrong or illegal about showing ads on a website.

<comment><USER42> Maybe they do more than "sells future predictions" \- but I think what you are quoting is still basically true.

Sure some ad sales are simply general feel good branding, some ads may be to get more data for use years later, however many of the ads I have run with both fbk and big G were in fact using their predictions of the future.

search term "dentist open saturday" \- predicting a future dental visit.

realtor Portland - predicting future buying or selling of property.

yes their customers in which they can take money from are advertisers, and the product they are selling is the fbook user and google user, often predicting a future choice, and offering us a chance to influence for the right price.

The more they know about their product (the end user) like zip code, the more valuable sometimes.

There are sometimes issues when ads on a web site are illegal, and many more times when an advertisement is right or wrong is not so black and white but depends on many other factors.

</comment></comment><comment><USER43> If you're not the client, you're the product.

Then think about how much do you pay for google and facebook services.

<comment><USER44> How much do people pay to use Linux or DuckDuckGo? This statement is parroted so much and adds so little to every discussion.

<comment><USER45> Aren't you the product on DDG? Like they still sell ads and do marketing. Just less invasively than Google.

An argument could also be made for Linux, that the users are the product. Like why does all this development get done on Linux? Because people use it. Why do companies choose Linux on their servers? Cause all the users that know it.

Sure, you're not getting exploited on these platforms, which is awesome, but the users are still valuable to each of them.

<comment><USER44> I'm not arguing whether or not those services actually "make you the product", I'm just railing against this annoying rhetoric that "being free" in itself somehow makes a service exploitative.

<comment><USER42> I think it's important to remind people of this, but to add more examples and to mention the alternatives as well.

I agree that something being free does not always equal "its exploiting you" \- however that does not discount the importance of remembering that a free service likely has ulterior motives compared to a premium service - but not always of course.

I remind myself and others about how free services are likely to change eventually so don't end up 'all in' on a free service as things can change when the company changes or gets sold or goes premium or whatever.

eg - people that built a business using an fbook page that saw the friend feeds change got screwed. News businesses that added fbook share this stuff to their pages to later find fbook putting more pressure on them than google..

When a video converting / hosting plugin was released for wordpress I had to pipe up and ask what the monetization plan was for this new thing - as it would not be tenable to have unlimited video hosting without ads or data sharing and other limits in the future..

When people do not think about these things, it's easy to take advantage of a free service and depend on it, sometimes at the expense of otherwise good competition - only to find later that vendor lockin is evil and can turn exploitative - even at times when the original creators intent was not to do that.

Even in those cases where you are not currently being exploited, you can still indeed be the product, if nothing else other than "our app has 100,000 users so we can have a value of..."

If people thought about this more, they would ask about exporting their data before signing up for a service, for continuation of service for example.

This kind of selling of users is more often with free services, but can also occur with paid services (many banks sell your info by default and only limit it when you opt out, and they still charge you fees for accounts for example)

However a service you pay a fee to like spotify perhaps? needs to be more careful about taking care of their primary customers (subscribers) so long as there is competition and all.

Sorry the rhetoric is annoying to you, it would be nice if people really understood this and thought it through.

</comment></comment></comment></comment></comment><comment><USER46> Terms of Service are really out of control, and probably need a democratic checkup. One cannot sign away constitutional rights, which means somewhere there is a line to draw.

When is a company abusing it's first amendment rights and dangerously coercing behavior, a la "yelling fire in theater"? At scale, this doesn't have to be explicitly extreme or violent to have actual extreme or violent effects.

When is it going too far against illegal search, by using technology that transcends physical, or psychic, boundaries?

When, really, have they crossed over your right to privacy, by accurately inferring very personal and private details you didn't share, from details you did?

I wonder what would happen if people flipped the script. Send Google a letter, stating your new ToS: "Your continued use of my data is $legalese, and if you don't reply with "no thanks", you agree to remit $dollars to me Monthly." If they don't respond, this is your new operating agreement.

<comment><USER24> > _" When is a company abusing it's first amendment rights and dangerously > coercing behavior, a la "yelling fire in theater"?"_

I really wish people would stop using that example. That standard of free speech is obsolete, and it comes from an abhorrent case where a draft protestor during WWI was arrested for telling people to dodge the draft. _" Yelling fire in a theater"_ was used to justify upholding his conviction. It's a deeply immoral standard of free speech.

<comment><USER47> > That standard of free speech is obsolete

What is the modern example/standard?

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


U.S. Asks China to Help Rein In Korean Hackers - <AUTHOR> http://www.nytimes.com/2014/12/21/world/asia/us-asks-china-to-help-rein-in-korean-hackers.html

<comment><USER2> It's more likely that USG uses these incidents to further justify NSA projects.

Surprised by the fact that no one tech guru in the US steps up to a main stream media and say how laughable the accusations are. Not to defense N.K., but to inform US public about the nature of network attacks.

</comment><comment><USER3> God I hope USG has some proof of the N.K. connection up their sleeve. Otherwise they are digging a deep ditch in which to thrust their trolled corpse.

</comment><comment><USER4> This whole "north korean hackers" story is a less credible scenario than the one in Wag the Dog but they make up in perseverance what they lack in intellect .

<comment><USER5> Exactly. Mainstream media is so laser-focused on this North Korean witch hunt, but where is the evidence? Last time the US embarked on a similar vendetta we ended up invading Iraq on trumped-up weapons of mass destruction charges. And we all know how well that story played out.

Personally, I think this could be an early play toward further restricting internet freedom. All of the public pushback on SOPA, PIPA, and disrupting net neutrality has forced the government into less ethical strategies aimed at the same goal. What better way to justify new and oppressive cyberterrorism countermeasures than by framing a rogue nation state that most already despise?

<comment><USER6> On your second point, I believe you're right. The US government and the FBI don't believe NK are actually responsible, nor does Obama believe the Chinese will cooperate. This is pure theater.

</comment></comment></comment><comment><USER7> Like China is going to help? They condemned The Interview just the same.

<comment><USER8> Also, it's not like the DPRK has a deep bench of high level technical talent -- unlike their neighbors to the north, who have been known to hack numerous US-run systems.</comment></comment>


Noobs Only - Step by step instructions for building websites - <AUTHOR> http://noobsonly.com/

<comment><USER2> That's an example of how not to create a website.

 _$query = "INSERT INTO groceries (item_name, in_cart) VALUES ('".$_POST['item_name']."', 0)";_

come on..

<comment><AUTHOR> Was planning on adding string cleaning in the next lesson :)</comment></comment>


Iterstuff is the cut-down single-blade version of Python itertools - <AUTHOR> https://github.com/mobify/iterstuff

<comment><AUTHOR> "The atend and peek properties of the Lookahead class enable a whole set of simple recipes for working with generators."

</comment><comment><AUTHOR> The docs make a nice tutorial on various itertools functions and how iterstuff enhances them.</comment>


Why You Should Always Be Looking For A Cofounder - <AUTHOR> http://founderdating.com/3-reasonsto-get-started-much-sooner-than-you-think/

<comment><USER2> This is no different than saying "you should be looking for a wife on a dating site". You should be looking for people you would trust with more than a side project and the best way to do that is to do many different projects with many different people over time and getting to know them on a deeper level. You will either get invited by them to do something bigger, or have a range of options when you are ready to do your next big thing.

</comment><comment><USER3> I've never understood the sentiment of "I need to find a cofounder" (especially the seemingly ubiquitous seeking of the technical variant).

If someone doesn't already have a long list of people (friends, former colleagues, friends of friends) whom they could possibly reach out to, what does that say about that person when seen from the potential partner?

<comment><USER4> Having a long list of skilled friends and colleagues is categorically not the same as having potential co-founder material. I dated a whole heck of a lot of girls before I married one. If you're not some wet-behind-the-ears kid fresh out of college and you've built a real network, your network consists of experienced grownups who likely have families, standards of living, and career paths. It's _not easy_ to get those people to give up their current velocity and expose their lives to the risks and challenges of a startup.

Of all the friends and colleagues I've developed over two decades in the industry, I have _two_ that I've seriously considered for co-founders, and I can't pry either of them loose. One is working with me on the company as my IP lawyer, just not as a co-founder. The other I'm hoping to get as an early hire when the company is farther along. There are lots of other friends with great skills that I won't consider for co-founder because I don't think they'd be a good fit, for reasons that are personal for each one.

This isn't a reflection on me or on the idea. It's a reflection on the reality that real grownups with real commitments can't always just drop everything and start anew. And these friends are valuable to me _because_ they're experienced and I have worked with them before, and they're happy and honored to help out as advisors and sounding boards.

I can tell you from hard experience that there's a good reason the industry is down on solo founders. It's incredibly hard. But looking for co-founders isn't necessarily a good option. If you can't find one right away, looking is time- consuming and difficult with no guarantee of success, not if you have standards. Which is a better use of my time - developing product, or looking around for someone to help me? And by the time I'm far enough along that it becomes much easier to bring someone in, are they co-founders, or hires?

</comment></comment><comment><USER5> Cofounder can also do more harm than good. Looking for a cofounder without knowing what you really need is ill-advised. Most of the stories I heard was about cofounder who knew each other before starting up.

</comment><comment><USER6> The reasons stated do not rationalize why I should be looking for a cofounder, so the title here on HN is misleading. There is an underlying assumption in the article you just should be looking for a cofounder and these are the three reasons why you should start now. Click here to get started.

Also, Founderdating does not provide a transparent way in which they vet the people that apply. I don't like that approach one bit. It's pooling resources in the hands of a few.

</comment><comment><USER7> If I met a person who struck me as great co-founder material, I would, of course, embrace that. But I don't particularly want a co-founder; I prefer to solo. I don't care what the world of VCs think. My start-up is for me, not for anyone else, and if the Universe hands me a co-founder, great, but they aren't necessary.

Starting in April, good Lord willing and the creeks don't rise.

</comment><comment><USER8> I'd first have to be a founder of something, or at least want to be.</comment>


A New Improved Lottery - <AUTHOR> http://lesswrong.com/lw/hm/new_improved_lottery/

<comment><USER2> This isn't a terrible idea if we can attach some wisdom of the crowds and human intelligence to reduce the randomness. It is what I'm trying to do at [http://hypercapital.info](http://hypercapital.info)</comment>


All about Linux signals (2009) - <AUTHOR> http://www.linuxprogrammingblog.com/all-about-linux-signals?page=show <comment><USER2> I don't think enough time is spent on signalfd: It's not just great if you have it, it's easy to emulate if you don't[1], so it's worth designing programs to use it instead of trying to handle interrupted system calls everywhere.

SIGIO could have gotten more attention, it get's a poor treatment because epoll/kqueue are better, but if you stop thinking about getting out of the signal handler as fast as possible and start thinking of it as a kernel-side queue you can save a couple syscalls on an IO-heavy application.

There's some neat tricks you can do with SIGURG as well, since it lets remote processes(!) send a signal ahead of the TCP buffer.

Another good thing worth mentioning is the trick of trapping SIGSEGV/SIGBUS to sbrk; something like this:

        char*p=sbrk(0);
        void h(int _){ sbrk(4096);signal(SIGSEGV,h); }
        signal(SIGSEGV,h);

This allows you to manually manage memory without having to check how close you are to the end of memory[2] which can really simplify some programs, since you'll get a hardware trap that automatically extends the data segment when you write off the end of memory.

SIGXFSZ can be dealt with similarly: So many programs try to track bytes copied (quotes, etc) when setrlimit and a signal is easier. More programs don't bother which is annoying.

Also not mentioned: The terminal. SIGWINCH[3] which is useful for getting updated when the window resizes, and SIGTSTP/SIGCONT is how you detect a console user putting you in the background.

[1]: [https://cr.yp.to/docs/selfpipe.html](https://cr.yp.to/docs/selfpipe.html)

[2]: [https://github.com/geocar/ed-v6/blob/master/ed.c.orig#L608](https://github.com/geocar/ed-v6/blob/master/ed.c.orig#L608)

[3]: [http://web.mit.edu/~mkgray/jik/sipbsrc/src/utree/tst/sigwinc...](http://web.mit.edu/~mkgray/jik/sipbsrc/src/utree/tst/sigwinch.c)

<comment><USER3> The self-pipe trick isn't a perfect replacement for signalfd, because the signals aren't blocked. Blocked signals don't cause EINTR when they're received.

When working on OS X (and presumably BSD), you can use kqueue (the OS X man page is comprehensive) to watch for signal delivery. The same SIG_BLOCK requirement applies.

(Whether this is a practical matter, on the other hand, I'm not sure... if your main loop is based around select/poll/kqueue/etc., you probably won't be making any calls that would block anyway. And I'm not even sure that avoiding EINTR is such a great idea in the first place, though obviously if you have to block it to use signalfd/kqueue then you must. But it's actually quite a useful error to receive, and fits in quite neatly with level-triggered polling.)

<comment><USER2> They do if you use SA_RESTART :)

<comment><USER3> That's a good point! I forgot about SA_RESTART.

</comment></comment></comment></comment><comment><USER4> Since this came out memfd(2) was created to stop the segfault on truncated mmap file issue, you can seal memmapped regions so they cannot be resized.

</comment><comment><USER5> See also _Proper handling of SIGINT /SIGQUIT_ ([http://www.cons.org/cracauer/sigint.html](http://www.cons.org/cracauer/sigint.html)).</comment>


Ask HN: What's the most difficult part of learning to program? - lachlan-sneff <comment><AUTHOR> Okay, there are a few possibilities here, so I'll go over some of the ones I feel may be the more difficult aspects of learning to program:

1\. It's much harder to read other people's code than to code yourself, so it's very easy to get put off by the apparent complexity of other people's work.

But you don't know why their work is like that. You don't know if their coding is actually good, you don't know what odd OS/browser/language version bugs are being fixed by the weirdness there, you can't see all the work that went into the program before... It can be misleading, and make you feel like you 'don't get it'.

2\. Tutorials being very heavily slanted towards the beginner and expert ends of the spectrum. It's harder to go from intermediate to expert than from beginner to intermediate or learn more as an expert, because few tutorials are written for that level of expertise.

3\. Similarly, figuring out why something may work the way it does on a fundamental level can be tricky. Tutorials often have a 'just trust us on this' attitude towards explaining tihngs, and don't really go into why different types of variables work, why loops work, why say Redux works the way it does, etc.

4\. And I guess for some people, just the whole mindset can be difficult to get into. Programming is a very precision driven exercise, and for people used to the 'good enough' way that most of society works, that can feel jarring and awkward. It can feel like being the world's strictest dog trainer, with the computer or language or compiler or what not being a pooch that can't figure out what you want from it unless you teach it in the exact right way.

</comment><comment><USER2> Getting stuck even though there's a better way (established pattern or architecture) that you don't even know exists.

If you work in a large company like Google, then there's lots of code and design documents you can read and, moreover, many helpful colleagues you can ask for advice (and who will provide detailed comments on your design documents).

If you're working on your own, or in a smaller company, then you might do things in a suboptimal way for a very long time just because you didn't see someone do it a better way. You might re-invent the optimal solution, but that's not the usual case.

Another way to look at this problem: "it's difficult to avoid having 1 year of experience 10 times"

<comment><USER3> Can you please explain what would be the best option to break out of the rut when one is mostly working on his/her own and doing a lot of suboptimal learning?

I frequently find myself in the second situation and only a handful of times have I been in the first situation.

<comment><USER2> A few ideas based on things that have helped me:

1\. Go to a local meetup group for your favourite language, take your laptop along, and show some folks what you've been working on. Show them what it does, and then walk them through the code. You can do this over beers. You will end up learning something either by explaining things to others, or by receiving questions and feedback from more experienced developers.

2\. Ask a more experienced friend to meet you one weekend, for a couple of hours, to look at some of your code. Getting a code review from someone outside your normal environment will likely result in a few valuable tips.

3\. Read books about architecture, like 'Web scalability for startup engineers' or books targeted at intermediate developers, like 'Powerful Python', and immediately go back to some past work to figure out where those patterns might be of use.

4\. Ask any and all of your friends who are engineers about what they've been working on, what difficult problems they've had, and how they are working to solve them.

5\. Read open source code. (This is a bit hard, as not all open source code is of high quality, and it's hard to know if it's good unless you're already a great developer.)

<comment><USER3> Thanks! I really appreciate your insightful comments.

</comment></comment></comment></comment><comment><USER4> There were many different things, at different stages of my education and career.

But I think the hardest was the very first threshold I had to cross, when I first started taking legitimate CS courses. It had more to do with just the sheer ability to hold onto complex thoughts, data structures, algorithms, in my head.

I think a lot of engineers take this for granted, including myself. But I remember, just starting off, and realizing I felt like I was running out of working memory in my mind. It was almost like hitting a threshold where I really felt like I was stretching my mental ability to go through processes, run through algorithms, visualize concepts, etc. Eventually, as with anything, you get better and do these things faster and thinking about CS becomes second nature. But i specifically remember feeling like I reached my mental limits till I and enough practice to get good at thinking about CS and holding many things in my mind as I thought through algorithms.

</comment><comment><USER5> Programming itself I think is fairly easy if you have the mindset for it. What isnt easy is making your program work with existing technology and programs.

Same goes for writing vs reading code. Maybe we teach and learn programming all wrong. For instance, when learning a natural language you dont read a manual on the grammar and then go off and try to write a novel looking up vocabulary along the way... There is absolutely no way you would be succesful with that approach, you would invent your own messed up version of the language that seems absolutely strange to everyone else. But that is sort of what we expect people to do when they learn to program.

It might be better to spend a year reading and dissecting good code of varying complexity in a debugger before you ever even write a line of code.

</comment><comment><USER6> Realising that maintenance is the job and when you get to looking at legacy code, that it's not crap, but just represents a person/team's point in time understanding of a domain. Your understanding is different or maybe the domain has changed (no business stands still) and so you would code it differently here and now. But you might not have back then with the understanding and knowledge the team had when they wrote it.

Realising that in x days/months/years your own code will be the legacy and viewed by other developers and yourself. Your code will represent your understanding at the point in time you write it. It's natural if it looks horrid or incomplete or bad or that you missed something obvious. Don't beat yourself up over it.

Look on any code with the understanding and compassion with which you would have the next developer look on your code.

That and making sure to get up, stretch regularly and look out the window and get out the building. Smell the roses. That sort of thing.

</comment><comment><USER7> As a self taught programmer who has mostly utilized project based learning, the most challenging parts for me have been:

* Knowing my own knowledge gaps. I know there's a lot I don't know, but it can be difficult to pinpoint _what that is_ exactly because if I don't encounter it in a project I may not even see the gap until I _do_ encounter it one day. Supplementing with short structured courses like Pluralsight, Safari Books Online, etc has helped in this regard.

* Being confident that you're solving things in a good way. "This approach works, but is this really the best approach or is there some existing pattern or data structure I should be using for this that I just don't know about yet?"

Both of these things have become easier to address with time and practice.

</comment><comment><USER8> I think it's hard to believe in yourself. If you don't believe in yourself, it's harder to be persistent enough. The lack of persistence fuels the lack of belief in yourself and the loop continues until you give up for good.

Writing code is hard, but confidence and persistence will get you a lot closer.

</comment><comment><USER9> Learning to program is actually pretty easy. You can get up and running in a few minutes with your first Hello World program and that's how most programming languages are designed.

For me personally, the hardest part was having the patience to actually manage to build something useful other than the sample toy programs that came with the textbook.

You need to have the patience to read tons of documentation, google for example code, ask questions on Stackoverflow when stuck, so on and so forth. Once you do this for a single project and get something useful built, it gets much easier :)

</comment><comment><USER10> Becoming fluent in the language syntax is potentially the hardest but it is also the most important because of all the imprecise language that people use to write about programming.

If you are language fluent then you can read the source code and know exactly what is going on, otherwise you are stuck trying to make sense of someone's hyped up abstraction of a basic programming design pattern.

</comment><comment><USER11> For me it's going from knowing the syntax of a language to actually designing and building something useful. No one really gets this right as far as I can tell. I can solve lots of stupid little puzzles in several languages but when it comes to building something without a tutorial giving me step by step direction I'm completely lost.

<comment><USER12> Then break that 'building something' into 'lots of stupid little puzzles'. That is the trick!

</comment></comment><comment><USER13> Learning what to learn.

I eventually got frustrated with books and courses and instead just visualized what I wanted the page/site to look like and do.

I then googled a lot of problems I was having ("How do I sort columns in an HTML table using JS") and then made code work.

For especially tricky problems, I would ask my friends how they would approach a problem.

</comment><comment><USER14> I think understanding how to use abstractions, naming, and simplicity are things you learn from experience. If you could start out with some good rules of thumb covering these, it would go a long way towards making you a better programmer.

</comment><comment> a-saleh I think it is the fact that most of the time

a) things don't work b) it is hard to say why they don't work

Annecdotaly, from looking at my mom, a 50+ year old economist working on insurance backend platform, any sort of error would be hugely discouraging.

</comment><comment><USER15> Learning how to balance short-term benefits (with long-term costs) against long-term benefits (with short-term costs).

That's why people talk about it being "easy" to write a program that compiles and runs, but hard to write good code.

</comment><comment><USER16> getting stuff to work initially (just break tasks down, test each bit, eventually you will have things going)

worrying you are doing something wrong - you probably are but remind yourself you just have to start somewhere. As you get it more you will learn of better ways to do stuff. There will be times when you paint yourself into a corner and have to redo just about everything, common even for experienced programmers.

Then I would say getting your brain trained to understand what you can do with a language, how the computer reacts to different program tasks, and how to write stuff so the user gets what they need.

</comment><comment><USER17> Getting dev environments set up and debugging obscure error messages. Persistence/stubbornness to fight through these obstacles is one of the most important traits for programming.

</comment><comment><USER18> learning and setting up an IDE. ;)

probably consistency and dedication. there is so much to learn. so finding that area you love is the key.</comment>


IBM: Faster processors by mimicking DNA folding - <AUTHOR> http://www.breitbart.com/article.php?id=CNG.749b76a59aeda926a4a3848bef046ea2.2c1&show_article=1

<comment><USER2> Recall the days when the 'theoretical information density' of the hard drive was seen as the limiting factor for storage devices.

And then IBM came along with the GMR head and turned the world of storage literally on its head.

I wouldn't put it past them to do it again. There are plenty of companies out there pumping billions in applying technology, but very few of them beat IBM when it comes to creating new technology.

</comment><comment><USER3> Very low on details, this method is. I'd like to know how exactly it works.

</comment><comment><USER4> More Information from an interesting POV:

[http://metamodern.com/2009/05/22/a-third-revolution-in- dna-n...](http://metamodern.com/2009/05/22/a-third-revolution-in-dna- nanotechnology/)

<http://e-drexler.com/d/07/00/1204TechnologyRoadmap.html></comment>


Exploring No Man's Sky, A Computer Game Forged by Algorithms - <AUTHOR> http://www.technologyreview.com/news/529136/no-mans-sky-a-vast-game-crafted-by-algorithms/ <comment><USER3> The issue with a lot of procedurally-generated content is that overall things become same-y. Lots of breadth, little depth. When you have a set number of variable sliders, you don't have to see all the possible worlds to get a sense of how many sliders there are and what their ranges are. The problem only gets worse when moving away from planet/landscape generation (dumb matter) and getting into simulations of history or society.

I'd be really interested in learning about any work in the "interestingness" of procedural content. Is it possible to quantify that sort of emergent complexity that happens in life, or in a work or story with artistic direction that takes on a life of its own? Can a system make a billion compelling and unique stories without solving the issue of Strong AI and just making a superintelligent DM?

<comment><USER4> I've been working on combating this problem for a few years now. I'm working on a game called Spire ([http://hitboxteam.tumblr.com/](http://hitboxteam.tumblr.com/)), which is a mix of Quake and Roguelikes. Every procedural dungeon creator I've seen so far seems to just use pre-made rooms or chunks of rooms, and shuffles them around. It never feels like you're in a new world each time, it just feels like you're in the same world jumbled up.

For the past few years, I've been working on an alternate system, which is to use a goal-oriented design based around the player experience. Each element in the world is placed purposefully, instead of randomly. I do this by emulating the traditional level design process. I think about every action and intention that goes in creating a level manually, and reduce it to rules for my system. The goal is that the end result feels crafted to guide the player through an experience, rather than to rely on the player to create a experience for themselves.

Examples of the generation behavior:

\- Lights are placed in areas to guide the players attention towards the primary path, or treasures and dangers.

\- Geometric features are generated based on spatial aesthetic rules (eg. a pleasing amount of symmetry and repetition), as well as gameplay rules (eg. jump distances based on player capabilities, corridor widths based on desired feeling of claustrophobia and combat difficulty).

\- Unique color palette for each seed.

\- Parameters of room construction have emotional analogues (high density -> claustrophobia; harsh angles -> tension; high symmetry -> order; sweeping vistas -> a moment to take a break; gradually lowering elevation -> an unsettling descent).

\- The curve of emotional parameters over time have varying mathematical relationships to other parameters' curves, so every seed feels like there is a unique consistency to it.

<comment><USER5> The "emotional analogues" sound actually very interesting. I wonder how well that will hold up in practice - it seems like if it were possible to generate a compelling story from variables we'd be able to do it by now - we would be able to consistently put out compelling stories in book form at the very least. Its frequently not the structure or even the overall plot that's the point, but the little details that matter. I've heard it said of movies that the point is not what happens, but how it happens (probably a paraphrase of Roger Ebert). It feels like we're a very long way off from having any machine generate that.

<comment><USER4> It's certainly an experimental method, so I'm not quite sure how it'll turn out (but it's getting there). I agree about the details - although of course it's important to have a proper structure to the world and narrative, as it gives context to the details. My aim to build a thematic structure, and then to bring it alive through the details. Things like light placement, color, room shape, prop placement, and the overall mood of each section should all work to build an interesting world.

We even have generators that make tiny little stories out of the props - <USER2> campfire might have candles and tomes next to it (signs of a ritual), or maybe utensils and dishes (signs of a traveler's meal). Not to mention, the actual gameplay of movement and combat is intended to be its own world of intricacy (the other guys are working on that).

I'm not aiming to explicitly generate narratives of characters and dialogue and words. Rather, the system generates the feeling of narratives. Rising action, conflicts, an interesting flow of emotions, pacing the intensity, etc. The player can fill in the details themselves, as they (not their character) are the protagonist, exploring the world and going on a journey of discovery and mastery.

My thinking is that what it lacks in human touch, it makes up for in mystery. Knowing that it's a unique world that no human has ever set foot upon before is genuinely exciting, and gives a real desire to explore. It's like that feeling you got the first time you played Minecraft, and found some amazing outdoor environments and knew your eyes were the first to see it - but then as you played over and over you saw the patterns and it lost the magic. My goal is to capture the first feeling, and to hide the second effect with not patterns but processes, generating things based on a thematic goal in mind.

</comment></comment></comment></comment><comment><USER6> Looks like it could be a good game either way, but I'm questioning their use of words when they say "every atom" is procedurally-generated, as in their first reveal trailer. [http://www.youtube.com/watch?v=U6fCn8oB- sg](http://www.youtube.com/watch?v=U6fCn8oB-sg)

From what they have demoed, they have not proven that anything actually is being generated. My best guess is that they randomly vary colors and textures (and generate the atmospheres, as they say), and randomly place models about the planet, which is a far cry from actually generating all of the models and animation for everything. A lot of it just looks modeled by an artist (and they do have an artist on their team). Anyhow, I don't think this will necessarily detract from the game, just a nitpick on choice of words...

An additional concern is how quickly this game came out of nowhere (I think?). The Inovae (formerly Infinity) engine took many years to develop - it was one of the first of its sort to allow seamless planet to space transitions with tons of terrain detail. If you look in close detail at the differences between the two, you can tell that No Man's sky does not have a very good sense of scale when flying into a planet (unless the planet were incredibly tiny). Also, note the angle of the fly-in is straight on; its much harder to prevent detail popping when flying in tangentially to the planet and I wonder if they have yet addressed this. Again, just another nitpick. :)

No Man's Sky (2:00 in for the planet fly in): [http://www.youtube.com/watch?v=nLtmEjqzg7M](http://www.youtube.com/watch?v=nLtmEjqzg7M)

Inovae/Infinity: [http://www.inovaestudios.com](http://www.inovaestudios.com) and [http://www.youtube.com/watch?v=a6a69dMLb_k](http://www.youtube.com/watch?v=a6a69dMLb_k)

<comment><USER7> They haven't gotten into the specifics, but they are pretty adamant that this isn't just reskinning and randomly putting stuff on prefab environments. Their interviews with Eurogamer and the like from E3 are illuminating in this regard. I understand the skepticism, but I personally would rather be excited that this might in fact be something very new. The proof (or lack thereof) will be the game itself, so we'll just have to wait.

<comment><USER6> I'd be happy either way. :) But really, for the sake of their own credibility, they should demo these things to the public (regardless of how broken anything is, it would go a long way to reinforce what they are saying). I definitely would not say they are "lying" about anything, just that until they show their tools, we have no idea how in-depth the generation is.

</comment></comment></comment><comment><USER8> None of these articles on No Man's Sky ever mention Noctis, which is really strange. That's clearly a precedent here worthy of mention. [http://en.wikipedia.org/wiki/Noctis](http://en.wikipedia.org/wiki/Noctis)

<comment><USER9> Not even Spore.

<comment><USER10> We don't talk about Spore.

</comment></comment></comment><comment> fisher-lebo I get the gist of how Minecraft is constructed: just a bunch of blocks with algorithms which hide certain blocks when they aren't in the player's view.

Are there any articles about how an engine like _this_ is built? It is an extreme level of procedural generation (apparently), but the graphics aren't blocky and as abstract, but rather pretty impressive.

In a similar vein is Eskil Steenberg's Love [1], but this is on another level entirely.

[1] [http://www.quelsolaar.com/love/index.html](http://www.quelsolaar.com/love/index.html)

<comment><USER6> I am working on a full procedural generation engine (not like minecraft, but it does use voxels at a much higher resolution). Wrote up an overview of how it works, if you are interested: [http://www.voxelquest.com/news/how-does-it- work](http://www.voxelquest.com/news/how-does-it-work)

<comment> fisher-lebo Thank you. Your work is impressive and it is good to see someone putting forth a technical explanation like that. Much appreciated.

<comment><USER6> Thanks! Any questions just let me know :)

</comment></comment></comment></comment><comment><USER11> "The tens of millions of planets that comprise the universe are all unique."

We will probably never know, but I wonder if the reality of our own universe is that any life on other habitable planets will look remarkably similar to that here on Earth; given the parameters within which a sustainable biosphere are possible quite narrow. There might be some local variation but nothing that would be particularly mind-boggling to biologists (e.g. non-carbon lifeforms).

I think Brian Greene suggested that in a sufficiently large (i.e. approaching infinite) universe, if you travel far enough you will eventually encounter a multitude of 'Earths' that are the same as our own but subtly different in various ways.

In which case, if its a criticism of procedurally-generated worlds that they tend to have a lot of repetition, then the models are probably quite accurate!

<comment><USER12> There are several kinds of infinite. The kind where assuming the universe can be arbitrarily large would eventually allow you to encounter a parallel or subtly divergent Earth, with a historic Napoleon and where people speak Hindi, probably isn't the kind of universe we inhabit.

</comment></comment><comment><USER13> I'm having a partial flashback here and its killing me. Back in the 90's there was a guy who was building this exact same vision "Space Galaxy" or something where every planet was unique, every alien race unique, every solar system, full planet to planet seamlessness. Derek somebody? Generally considered impossible and derided by the PC gaming press corps.

I agree with most that you need a certain dimensionality to the generation in order to get something credible. Definitely going to check this one out when it comes out.

<comment><USER9> Derek Smart! Never forget!

<comment><USER11> Battlecruiser 3000AD!

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

<comment><USER9> 65% on Metacritic. If that doesn't show what that site it, what does?

</comment></comment></comment></comment><comment><USER14> Another space game coming out this year that will heavily use procedural generation to re-create the milky way galaxy is Elite: Dangerous. I'm in the beta and it already looks great despite many features not yet being activated for the beta players.

<comment><USER15> You can't land on planets :(

<comment><USER14> This is coming out as an expansion after the initial release of the game. Or at least that's what the developers are promising if the initial launch goes well.

Indeed planetary landings (and walking within a space station) requires as much work, if not more than, the space-flight stuff, so it's understandable that they don't want to just tack it on.

Frontier and First Encounters games all had seamless planetary landings so the goal has always been to include them in Elite: Dangerous as well. Everything the developers have promised so far has been realized (although some things a little later than initially scheduled), so thus far it's a good bet that they are not overselling their capabilities.

</comment></comment></comment><comment><USER16> To be honest, I thought our sun would be around a lot longer.

 _"If you were to visit one virtual planet every second," he says, "then our own sun will have died before you'd have seen them all."_

...

 _" The tens of millions of planets that comprise the universe are all unique."_

<comment><USER17> That's pretty funny. Though what I think they're saying is that the total size of the result-space for their planet generating algorithm is, whatever, hundreds of quadrillions or quintillions or whatever it is that makes that work out, but that a given instance of the universe comprises tens of millions of planets.

</comment></comment><comment><USER18> Now what would be really interesting is to have some sort of rudimentary evolution in a game like this. Star systems, planet geology, flora, fauna, everything.

<comment><USER19> No, what would be interesting is everything that you said with the addition of relativistic-speed travel. Take round trips near (or over, depending on your reference) the speed of light and watch how things evolve.

<comment><USER9> My god, the Loading times would be unbearable.

<comment><USER20> Easy solution to that. Build a computer in-game that runs the game, and then do your relativistic flight while it calculates the time evolution of the game.

</comment></comment></comment></comment><comment><USER21> PS4 only, really? Why can't developers release cross platform games these days? Releasing it for one platform prevents a significant amount of potential users from even trying the game.

I'd play it when they'll release a Linux version.

<comment><USER22> Independent developers need money to fund the development, being exclusive to a platform gives you those funds, as well as marketing and various other forms of secondary support.

The alternatives are a publisher (historical a pretty mixed bag, gaining control of your IP, changing the focus or name - see Divine Divinty) or crowd- funding (usually not enough to fund the entire project, unless you're Star Citizen :)).

<comment><USER21> _> Independent developers need money to fund the development, being exclusive to a platform gives you those funds_

How exactly? You can say that releasing for a single platform reduces costs. But how can it give you more funds? Marketing isn't really bound to limiting platforms (only expenses wise, same as development). However covering more platforms gives games more exposure, so more potential sales.

Cross platform tools are quite good these days (SDL2, etc.) so overhead of cross platform releases while still present is going down. A lot of the independent games of interest that come out these days are cross platform to my knowledge.

<comment><USER23> Console makers will sign deals giving you advance funding if you promise to make the game exclusive to their platform.

<comment><USER21> I see. That stinks, but I can understand why some developers can fall for this. Crowdfunding is a good alternative to prevent such kind of lock-in.

</comment></comment></comment></comment></comment><comment><USER24> I was excited to read about it until I saw it's only for a console. I've wanted to build a unique "park" world with similar ideas for a long time, but never had the time or resources. I guess you have to start somewhere, but doing this for a single console (P4) is not what I would want to work with. Outerra is the engine that has taken real world geometry combined with procedural geometry in the direction I wanted to go and is built for PC/Mac when it's complete.

<comment><USER25> It's likely coming to PC as well. It was announced last year without any console attached. At E3, it was at Sony's keynote, but it wasn't announced as an exclusive. On the other hand, they haven't explicitly said it will be on PC either, it's just an educated guess.

</comment></comment><comment><USER26> Disappointing article. There's no discussion of the algorithms the game uses to generate content.

<comment><USER3> Without trying to be too critical, it's strange hearing the term "algorithm" get a lot of use nowadays. Example: this BBC article fom 2011 about "When algorithms control the world", with phrases like [http://www.bbc.com/news/technology-14306146](http://www.bbc.com/news/technology-14306146)

I suppose it's the natural evolution after "programs" and "apps" became mundane things and data science became more prominent, but the way these articles talk about them with no detail makes me think that they might as well describe algorithms as some mysterious fairy-like substance that causes magical things to happen.

<comment><USER27> Hopefully this isn't too spoilerish, but this reminds me of the scene in Transformers 4 where that one guy screams, "Algorithms! ... Math!" :P

</comment></comment></comment><comment><USER28> I'm very impressed that you can fly from the surface of one planet to another seamlessly. Sure the science of partitioning space and changing levels of detail based on distance isn't that difficult, but it is rarely implemented.

</comment><comment><USER29> Holy shit, I guess I'm getting a PS4.

I suspect--or hope, at least--that they've built meshes that can be combined in a myriad of ways, so by combining the hundreds or thousands of combinations you can get millions of animal or plant types.

<comment><USER30> These are animated characters. So not only do you need to have the 'flesh' made procedurally (meshes/polygons), but also the 'bones' onto which the meshes are attached for animation. Procedurally creating static meshes is one thing, doing the same for bones and animating it with a mesh so that it looks credible is a whole other story ...

</comment></comment><comment><USER31> I read something on Reddit the other day which goes some way towards capturing my expectation about NMS. It's not particularly succinct.

[http://www.reddit.com/r/truegaming/comments/28cddf/im_worrie...](http://www.reddit.com/r/truegaming/comments/28cddf/im_worried_about_no_mans_sky/)

That is, procedurally-generated worlds are one thing, but an engaging environment (Minecraft) or story or purpose are other things entirely.

I have a flat game concept involving procedurally-generated concept but just can't think of what might tip it over into super-engaging territory.

<comment><USER32> I think the key mechanic that makes games like Minecraft fun is simply the creative element. Once players are given the opportunity to not only experience a dynamic world, but also shape it, that's when they feel that it's truly not static. Otherwise, the "procedurally generated" aspect is just eye- candy, as the reddit post mentioned.

</comment></comment><comment><USER33> I was impressed by the demo until I saw the very flat explosions that just faded out quickly, which took me out of the illusion immediately. Perhaps that's just a pre-production thing. Impressive product even if the article is sort of gushy and breathless...when I was playing Elite back in the 1980s the planets were just a circle with a smaller circle rotating on it for perspective XD

<comment><USER14> Did you know Elite is going to have a sequel end of this year?

Planets looks a little better this time around:

[http://img4.wikia.nocookie.net/__cb20140618220148/elite- dang...](http://img4.wikia.nocookie.net/__cb20140618220148/elite- dangerous/images/7/75/Earthlike_planet.jpg)

[http://img2.wikia.nocookie.net/__cb20140618220220/elite- dang...](http://img2.wikia.nocookie.net/__cb20140618220220/elite- dangerous/images/4/44/Earthlike_planet_02.jpg)

[http://i1242.photobucket.com/albums/gg522/frobitz/ed- rings-8...](http://i1242.photobucket.com/albums/gg522/frobitz/ed- rings-8_zps6b3b2dc8.png)

<comment><USER33> I have been trying to resist the temptation to purchase the beta edition :)

<comment><USER34> I bought the Premium Beta a couple of weeks ago and have not regretted it one bit ;)

Only about a week to go till the next update to the Beta and I'm looking forward to it - oh and premium beta entitles me to lifetime expansions so I reckon it's good value for money.

Go for it - you won't regret it ;)

</comment></comment></comment></comment><comment><USER35> Can we please call this what it is. Spore: Galaxy</comment>


Drones Are Learning to Land Like Birds - <AUTHOR> http://www.popularmechanics.com/flight/drones/a25718/drone-bird-ai/ <comment><USER2> Something like this could also be done by multi-rotor drones:

Instead of slowly coming in for a landing, the drone could be programmed to shut down (or drastically reduce the thrust) of the thrusters, and "fall" out of the sky.

In the process, the onboard cpu could monitor attitude and altitude, and apply thrust as needed to keep the craft from tumbling, then at the "last moment", apply full thrust for a dramatic slow-down and soft-landing.

Such a maneuver could be used for an evasive action as needed, as well as anywhere a quick-landing is wanted where a slow-landing could put the drone in danger (such as on a battlefield?), or other possible situations.

In fact - this sounds like an obvious thing to do - so I wouldn't be surprised if it has already been implemented. If not - then someone needs to try it (preferably on a cheap drone or simulator first, I'd imagine).</comment>