Google to open artificial intelligence lab in Princeton - <AUTHOR> https://www.princeton.edu/news/2018/12/18/google-open-artificial-intelligence-lab-princeton-and-collaborate-university <comment><USER2> look I get it - ivies attract best and brightest and the incentive structure for businesses is such that things like this make sense (as a recruitment tool) but why not drop this kind of program on a good-not-ivy state school? there are so many to pick from (um Ann arbor, ut Austin, UF, stonybrook, CUNY, etc). it's just strikes me as very similar to wealthy donors donating back to ivies - like c'mon what is marginal utility of that.

<comment><USER3> Princeton has an extremely strong mathematics department (possibly the best in the world) plus the IAS is nearby. Perhaps they are looking for close collaboration with pure mathematicians? My understanding is that there are not very strong theoretical underpinnings to most of the machine learning techniques in use today.

<comment><USER4> Indeed, the IAS has an upcoming program on machine learning.

<comment><USER5> The IAS program is underway since 2017 [http://www.math.ias.edu/theoretical_machine_learning](http://www.math.ias.edu/theoretical_machine_learning)

<comment><USER4> Yes, although the special one year program (with lots of shorter term guests) doesn't kick off until 2019.

</comment></comment></comment></comment></comment><comment><USER6> There are some cool well-funded startups with offices in Princeton. Shoot.

<comment><USER7> Also, Bloomberg.

<comment><USER8> Ewing != Princeton, despite the marketing efforts of "princeton south".

<comment><USER7> The address of the building is literally Princeton within city limits (according to Google Maps). Ewing is a bit too far. You might be thinking of the data center, though to be quite honest I don't remember where it is.

<comment><USER9> Though it has a Princeton address, the offices are really within the Montgomery city limits.</comment></comment></comment></comment></comment>


How Ning made me a chump and how you can avoid it - <AUTHOR> http://www.morelightmorelight.com/2010/01/15/the-problem-with-software-as-a-service-is-you-dont-own-shit/

<comment><USER2> The sad fact is that most users don't care about vendor lock-in and it is not in the interest of these companies to make it easy to export your data for use with another service.

I based my first startup around the fact that my users could pack up and take their site anywhere at any time and made it a one-click affair to do so. Unfortunately, this really wasn't enough of a pain point to have a significant affect on sales.

Major kudos to the dataliberation.org Google engineers for addressing this issue.

<comment><USER3> I'd like to make the data a little more portable on my site (<http://www.obsidianportal.com>), but it's one of those edge cases that always gets pushed to the bottom of the TODO list.

It's not that I'm sitting here twirling my moustache about vendor lock-in, just that there are so many other more-pressing user-facing things to work on.

If my users made a concerted effort to pressure me on this front, I'd probably do something, but so far it's just been a couple of stray "hey, can i get a data dump?" requests.

</comment></comment><comment><USER4> The article starts and ends with a dataliberation.org link, so after a bit of hesitation I decided to check it out. Lo and behold:

> The Data Liberation Front is an engineering team at Google whose singular > goal is to make it easier for users to move their data in and out of Google > products.

That was NOT what I expected. With things like this Google really goes a long way towards proving its "do not evil" mission statement. Not just the thing in itself, but the fact that it was a few engineer's initiative which nobody supressed, and doesn't even have "marketing" written all over it.

</comment><comment><USER5> To understand this you need to know that back in 2005, Ning wasn't as restrictive a your-own-customized-social-network service as it is now, it allowed you to build several kinds of social, "web 2.0"-ish pages like hot-or- not type rating sites, restaurant review sites and social bookmarking sites. You could "clone" the sites others had created and you even had some level of access to the underlying PHP code.

You can find references to that in old blog posts: <http://blog.ning.com/2005/10/rate_my_anything.html>

It's these applications that according to the article Ning later turned off, after they had moved to a new model.

</comment><comment><USER6> I think the interesting thing is summarized in this [http://getsatisfaction.com/ning/topics/ning_tos_its_our_resp...](http://getsatisfaction.com/ning/topics/ning_tos_its_our_responsibility_to_backup_sites_ummm_ok_how) Unless I've missed it, they say backups are your responsibility and they don't provide a method to backup the data. I do believe data security is the responsibility of whoever is setting up the service. I think it's just one of those things you have to check when you're exposing something to the public, to avoid showing your ass basically.

edit : also I think a scrape of only the salient pieces of data on his site, the settings files, would have been the 80/20 on backing up without a policy from ning

</comment><comment><USER7> Coding horror still links to the ning site that was erased, which is now parked by spammers.

</comment><comment> brown9-2 _Say I offer to hold your wallet for you while you swim. When you get out of the pool some of the pictures are missing. Is it ok that I wasn't charging you to hold your wallet?_

Is it smart of you to entrust things which you value to a complete stranger whom has made no guarantees to you as to the safety of your items?

This sounds to me like the issue with GoDaddy yesterday, if you don't trust your host, then maybe you shouldn't be using them.

</comment><comment><USER8> How do you guys feel about this? (taken from the Data Liberation Front's website which was linked at the beginning of the article)

"...we always encourage people to ask these three questions before starting to use a product that will store their data:

Can I get my data out at all? How much is it going to cost to get my data out? How much of my time is it going to take to get my data out?

The ideal answers to these questions are: Yes. Nothing more than I'm already paying. As little as possible."

My problem with it is that there IS a cost to exporting this data. That cost has to be paid by someone. Is it fair to work that into your price when it's a feature that perhaps very few users might actually use? How often should you allow users to back up their data?This is mostly in the context of SAAS products that are not free.

</comment><comment><USER9> _I'm not kidding, this is important in a job where most of what you do is sip coffee and type._

Don't forget "sprays coffee onto keyboard when you read that most of what you do is sip coffee and type".

</comment><comment><USER10> Is there a non hosted Ning alternative?

<comment><USER11> Wordpress has packaged some things together into BuddyPress, a modified Wordpress MU solution.

<comment><USER12> Also, Wordpress MU is being merged into the core Wordpress, I believe in the 3.0 release, and the most recent release of BuddyPress is no longer limited to MU.

<http://buddypress.org/>

<http://mu.wordpress.org/></comment></comment></comment>


So You Want to be a Programmer - <AUTHOR> http://www.codinghorror.com/blog/2012/05/so-you-want-to-be-a-programmer.html

<comment><USER2> He's still missing the point.

If anything "learning to code," is just bad language to describe something more worthwhile: teaching people the fundamentals of algorithmic and logical thinking. We don't teach mathematics to kids so that they will all become mathematicians and we certainly don't teach them literacy so that they will all become the next J.D. Salinger. They are just tools for solving other problems. "Learning to code," is just another tool that will become ever more prevalent in the years to come.

The problem of _not_ teaching these fundamental principles is that when it _does_ become useful to do so it will be too late. We cannot afford to wait yet another generation to teach these ideas and principles. I think we're far enough along by now in the development of computer science to have a basic language of things to talk about. If we at least teach people these things then how many other judges in technology patent cases will be able to at least have an intuition to call out a patent troll? How many office workers will be able to find hidden information in their data or automate the repetitive tasks they do and move on to better things? How many of them will know that at least it can be done and perhaps they should hire a programmer?

As it stands right now most people don't even have an intuition of what can be done with a computer. Their world is comprised of apps and silos. When they get onto an airplane they have no idea that they're sitting in a flying solaris box with wings. They don't realize that their e-reader is a general purpose computing device capable of more than just downloading books from that one store they bought it from.

I don't think anyone advocating algorithmic literacy is suggesting that we train legions of crafts-people.

 _edited for grammar_

<comment><USER3> "teaching people the fundamentals of algorithmic and logical thinking"

You don't need to be a programmer to think logically. There are a lot of other fields that teach that. Basic algorithmic knowledge is useful in daily life, but you won't necessarily gain that while "learning to code," and it's not necessarily more useful than anything else you might study.

"how many other judges in technology patent cases will be able to at least have an intuition to call out a patent troll?"

You going to have judges study electrical engineering as well? How about plumbing as well? Coding isn't special here, it's just the one thing you and I know. We're insisting that others toolbox's aren't full enough because they don't know the one tool that we happen to know. Perhaps that's a bit of a hacker-centric world-view?

<comment><USER4> >> You don't need to be a programmer to think logically.

That's true.

On the other hand, knowing the basics of coding makes it easier to do more even as an end user. Like writing a simple macro in Excel to do something it can't otherwise do.

I see coding as a useful life skill. I know how to do simple things like change a light switch, fix simple leaks, change a tire, hem a pair of pants, make a cheesecake, etc. but I'm not an expert in any of those things, nor do I want to be. Having said that, I also know when a problem is beyond my skill and to let a professional handle it.

There's nothing wrong with coding being one of those skills.

<comment><USER5> But did you learn those life skills upfront because you thought "it's important to know how to make a cheesecake", or did you learn as you needed them? Because Atwood doesn't seen anything "wrong" with learning to code; he does view learning it upfront as premature optimization:

        Here's a person who a) found an interesting problem, b) attempted to create
        a solution to the problem, which naturally c) led them to learning to code. (...)
        This is how it's supposed to work.

<comment><USER4> About half of those skills were pushed on me by my parents because they thought it was important, the other half by necessity or interest.

But, if I have kids, I intend to teach __all __of the basic skills that I can, which I guess could be seen as premature optimization.

</comment></comment></comment></comment></comment><comment><USER6> A) What Jeff thinks we're saying: "Everyone should be programmers so the world would be a better place"

B) What Jeff thinks is the right: "Everyone should be technically literate for their own good"

C) What we're actually saying: "Everyone should be technically literate for their own good"

You can observe that B and C are the same. So we actually agree, but some haven't noticed it yet. Only because the sentence "learn to code" can be very ambiguous. After having studied natural language programming, I've come to realize that 90% of disagreements between human beings derive from semantic misunderstanding of ambiguities. This is just yet another example. Kinda funny to be honest. Watching the blogs argue with each other is similar to watching Abbot and Costello arguing who is on first [1].

[1] <http://www.youtube.com/watch?v=sShMA85pv8M>

<comment><USER7> I don't think so. When does "programming" ever mean technical literacy?

What Atwood is arguing against is the idea that "everyone _needs_ to learn programming". Because of the title he chose for his first post (which didn't actually represent his point correctly), now many other groups of people, with a lot of varying views, are arguing with him on points he wasn't even making. You individually are arguing that everyone should be technically literate, but that's not what he was arguing against anyway.

</comment></comment><comment><USER8> Egh.

Not to be overly critical, but...

I read the article that spawned this, and it was not very interesting...although at least he took a clear stance. This one feels like a watered-down ode to truisms. What did I just read?

I've taken the liberty of rewriting his essay below:

If you like coding, or dogs, press the like button. If you don't like dogs, but prefer cats, press the like button. If you enjoy life, or stuff in general, press the like button. Maybe learn to code if you like it, but if not thats ok you can still learn it if you want, or not.

</comment><comment><USER9> I too felt a lot of readers had the wrong reaction and mis-interpreted Jeff Attwood's original post.

I was an undergrad in the tech bubble a decade ago. CS was the most in demand and popular major on campus. When the bubble burst, a lot of my former classmates abandoned programming. I was not surprised. A lot of them were CS majors because that's where the money/attention/parent pressure/sexiness was during the bubble. The moment it faded they left for greener pastures. They had realized, very abruptly, they were miserable during those long lab hours and hated debugging at 2AM before a deadline.

Coding is a beautiful and difficult thing, but like any career, it can be very tough sometimes. As Jeff says, the only path to happiness is to follow your love (or as Bret Victor would say, follow a principle). The challenge now is the same as a decade ago: quieting all that noise and figuring out what you really want to do.

<comment><USER10> I don't understand this.

Doing a couple hours a week learning Javascript and you will now change careers?

Or, inversely, learning Javascript on Codecademy will get you a lucrative job on frontend programming, if you are not talented?

Yes, of course doing what you love and striving for excellence and doing your research on your own are all great admirable things everyone should do. But they are hard, and not at all at odds with this tiny time investment. What's all the fuss about?

Let people do what they want to and get off the high horse, unless you are pulling people up with practical contributions, not just "don't do this"

<comment><USER4> During the last bubble, the hot scam was for "private vocational schools" to advertise to recent grads (i.e., fine arts and social sciences majors) to develop tech skills to help them get a job.

The company I was at was looking for cheap labour and hired several of these people who paid a small fortune for a six month "intensive" course. Needless to say, they were all duds looking to cash in on a hot job market.

<comment><USER10> At least the companies now will save the small fortune, they'll just point the duds to Codecademy/Udacity/Coursera.

People like the ones you mention will always exist, but they are not Codecademy's responsibility. It's even likely they would find a place where you get a relatively respected diploma instead of a certificate in PDF.

</comment></comment></comment></comment><comment><USER11> I'm getting tired of people having opinions about what other people should learn. If you think you will like messing with computers, give it a shot. If you like it, maybe you'll work hard and get good. If not, you'll probably do something else. Just like any other profession. Everyone needs to relax and stop worrying about what other people are doing with their lives.

<comment><USER6> We're not worrying, it's just an advice. I think others should learn to code for their own good, not mine. It's the same reason I think they should learn science, politics... And how to cross the road without getting hit by cars. I strongly believe you should learn this things because it would make your own life much better.

If you don't wanna listen to the advice, then don't. We don't really care. If you rather not learn how to cross the road because it's not something you enjoy doing, it's you who is gonna get run over, not me.

</comment></comment><comment><USER12> A long post, verbose and unclear in its message. Do not follow his advice.

About coding:

\- Coding is an efficient way to represent processes or business processes

\- Business processes are the fundament of any business

\- 99% of businesses today are digital in their core or heavily support by systems

About passion:

\- Most even do not know what their passion is anyway—so let at least all people try to get some success stories and basic experiences with code before they decide it's not their passion

\- Creating and building is seen as always an satisfying activity—be it creating a cake, a wooden table or some piece of code—independent of your passion

\- Coding can only be an instrument or a part or an building block in order to create something; code is as ubiquitous as reading, writing or math—it doesn't have to be your passion, it's just an instrument _to_ your passion; coding equals not coding: a SAP, web, game coder or a Photoshop scripter do code but at the end of the day they have totally different jobs and passions: a passionate game coder would die when writing SAP code because his passion isn't to code rather to create games while a SAP coder's passion is to organize and represent business logic as efficient as possible. Both love to code because 1) creating is a satisfying activity and 2) coding allows to create a product of their passion (a game or enterprise system).

It's about understanding that any process can and must be automated with software/systems/code nowadays and coding is just a vehicle to your passion.

Not learning to code is not an option.

</comment><comment><USER13> This is just a dumb cry for attention now.

Any "noncoder" who has ever repeated the same menial task on a computer for a week straight could benefit from programming. It's not a career. It's a tool and a useful one.

People in general need to love coding like they need to love hammering in nails or vacuuming the house, or manually massaging data for reports to various organizations.

> _And if you're reading this and thinking, "screw this Jeff Atwood guy, who > is he to tell me whether I should learn to code or not", all I can say is: > good! That's the spirit!_

And fuck Jeff for changing his tune from "Not everyone should learn to program" to "Well if you think you need to program, good for you! That's what I meant all along!" He still needs to walk it back. You can't possibly know when programming could be used without a basic understanding of programming.

</comment><comment><USER14> Based on my personal experience, you're right.

I'm not a programmer, but I recently launched a Wordpress site that I wanted to modify. Mostly just CSS/HTML stuff, but I'm beginning to realize I'll probably need to learn a little bit of PHP.

I had started the CodeAcademy lessons before I launched the wordpress site, but it got a little boring and I didn't see the point.

Once I launched the site, the CodeAcademy courses became a lot more fun. The process looks something like

1\. Hm, I want to change how this widget looks.

2\. Hm, there is no plugin for that.

3\. Hit "View Source" and try to track down what the widget looks like in HTML.

4\. Find it, realize you don't really know what it means.

5\. Do some googling, make some changes, doesn't work or screws it up.

6\. Do CodeAcademy lesson on HTML or CSS or whatever.

7\. Eventually fix it.

8\. Feel really, really good.

I think for most people it'll be hard to learn to code in a vacuum (myself included). Having a project where coding may help you significantly is a much better way to learn it. It may be messier, but it's much more rewarding.

This is not just a lesson for people who think they should learn to code, it's a lesson for people who want to learn anything. The most important thing you can do to learn something is to start a project that you're passionate about that will eventually require you to learn whatever it is you need to learn.

</comment><comment><USER15> Jeff wants a world where we programmers can make computers perfectly usable without understanding how they work. I don't think this will ever be the case. The abstraction will always leak a little, and people will benefit from having at least some idea of how computers and the programs that run on them work under the hood.

Regardless, in the mean time I would prefer everyone to have as much technical competence as possible, for both our sakes.

<comment><USER16> If you've ever seen a 2 year old or, worse, a baby boomer playing with an iPad you'd realize we're basically there. At this point Jeff's car analogy is about right. Is it useful to know how your car and computer work under the hood? Yes. Is it _necessary_? Increasingly less so.

<comment><USER17> There's an issue with comparisons to plumbing and mechanics. The kinds of devices "ordinary users" interact with in those realms are physical, and it's possible to see how they work at a high level just by looking at them. (Yes, cars and such are getting more and more like moving computers, but the basics haven't changed.)

This is not at all the case with computers. They are magical black boxes if you're not familiar with how they work. Understanding even just the ideas of programs manipulating data is important, however abstracted the interface is. And what better way to teach that than with basic programming lessons, even just something like Karel++. Not to mention all of the related concepts of logic and problem solving.

More importantly, computers are black boxes made by people. I think a big part of "learning to code" is not just being technologically literate. It's a way to teach an understanding that these devices are doing what someone told them to, and that users have the power to make the computer do what they want. That nearly everything we interact with was designed and built by other people is an incredibly under appreciated fact. Learning how to use tools is empowering, and a fundamental part of being human.

</comment></comment></comment><comment><USER18> I fear the point is still missed. He used the analogy of the auto mechanic, which I liked very much: "Isn't knowing how to change a tire, and when to take your car in for an oil change, sufficient?" Exactly.

Learning to code is like learning the basics of auto mechanics. If you own a car, it would be very beneficial to learn the basics of how a car works so you know to change the fluid levels, why they are important, and all 101 level maintenance. In a similar fashion, learning to code is like learning the high level basics of how computers work. We don't expect an business guy to learn to develop kernel level drivers, antialiasing algorithms, or detail on public- private encryption just like we don't expect every car owner to know how to repair a broken starter motor or diagnose a vacuum leak.

For a business guy, truly learning things like the detail required, difficulties in collaborating on code, and how larger programs take more time to change are all vital pieces to understanding their business.

<comment><USER19> As some who used to work on cars for a living, I can say that the analogy does not fit very well.

Learning how to check your oil level, or even how to change a tire is more akin to learning how to install a new wi-fi dongle for your laptop, or how to install a new OS.

Learning how to program the computer is akin to learning how to modify the drivetrain of the car. You modify the engine to make it perform better (versus a standard baseline) by modifying or even replacing the components of the engine.

You modify your computer with code to make it perform better (again, versis a standard baseline). All computers ar equal, what differs them is the software. How each programmer can modify the order of zeroes and ones to make the computer work in a certain way.

Some people go as far as creating an engine from raw materials. In computers, we know those people as the embedded folks.

<comment><USER20> You interpretation of his analogy is what he wants I think. If learning how to change your oil is like learning to install that new wifi dongle, then you should know how to do that. You certainly don't need code to do that. Similarly you don't need to be a mechanic to change oil.

<comment><USER21> You don't need to be a mechanic to change oil, but a small amount of mechanical knowledge helps quite a bit. I am talking about knowledge such as what is a drain plug, what is oil, what is an oil filter. Most people have at least a rudimentary knowledge of how a car works. Computing is still magic to many people, and it should not be.

<comment><USER20> Trust me I wish that it wasn't magic to people either. I need lots of hands to count the number of times I've explained some pretty basic (in my eyes) things about computers. Computer literacy is very important, but people don't seem to see it that way.

<comment><USER19> They are taught to trust the computer. To let it do its magic. Why then, should they go and learn how it works? For what purpose?

Imagine a world where people actually knew how to code. That means they would have enough skills to do basic math, and science. They would ask questions, rather than accept the answers given. They would challenge authority, rather than sit down and take orders.

</comment></comment></comment></comment></comment></comment><comment><USER22> This ongoing "Learn to Code" discussion reminds me OWS. Ask ten different people what it stands for, and you'll get ten different answers. If you try and argue against any part of it, someone will tell you that you "just don't get it."

In the end, all I get out of it is the impression that we "hackers" sure think highly of ourselves.

<comment><USER4> >> I get out of it is the impression that we "hackers" sure think highly of ourselves.

Is it that, or do we take ourselves (and our work) too seriously?

<comment><USER23> you make it sound like it has to be one or the other.

</comment></comment></comment><comment><USER10> Jeff is having too narrowminded a view. Whatever takes people off TV and Facebook to acquire a skill is a net win to society.

They could do even better things? Probably, but that's not the point. If you had a similarly structured online course to communicate better, then you might have something useful to say.

</comment><comment><USER24> Ugh. This again...

Zed slayed this debate but I guess the horse is still twitching.

<comment><USER25> "To win, you must fight not only the creature you encounter; you must fight the most horrible thing that can be constructed from its corpse." (<http://www.acceleratingfuture.com/steven/?p=155>)

However, like you, I don't feel particularly inclined to take a crack at it today...

<comment><USER24> I understand Jeff's motivation for writing his piece.

Alas, I just hope people learn to code if they want, or don't if they don't want to. That's all. No one else can make the decision for them.

I also go out of my way to teach people coding concepts. I recommend Zed's books to beginners. I recommend stackoverflow or quora for asking / answering questions.

Just be helpful to beginners and help them ignore the rabble rousers until they've got their bearings.

All this blogging and tweeting on the subject is just going to confuse folks in the early days, when they should be focusing on learning instead.

<comment><USER26> _I understand Jeff's motivation for writing his piece._

You mean that he's trying to revive his blog now that he's out of the stackexchange thing, building a readership that he can monetize in the future? Hence these sorts of confrontational, pablum entries that bizarrely make the front page of HN. I don't get it.

If these were usenet posts they would never, in a million years, see any attention.

<comment><USER27> I've never understood why coding horror gets so much attention. Every article usually fits in one or two buckets. The first type is an inflated, long winded, well marketed article about a ridiculously simple topic or idea that tries to sound more insightful than it is ("Look at how well designed my new cat food dispenser is.") The second type is when a more controversial subject is broached, like performance tuning or computer literacy, and the result is always the same: shallow analysis, often peppered with completely incorrect statements, a massive blowback from people who know what they are talking about, then a series of retort posts that dig the hole deeper until the meme finally burns off.

</comment></comment></comment></comment></comment><comment><USER28> I don't care if people learn to code or don't learn to code, but it would be nice if just for once, we could stop seeing a meta circle jerk at the top of HN every single day.

</comment><comment><USER29> Why does he mention the "No Silver Bullet" paper?

Oh, how I hate that paper: it is pure speculation (Nobody has any idea what complexity is actually essential and what accidental), and it seems to ignore the fact that the past of programming sports a couple of silver bullets already. Saying the past had silver bullets but there are no silver bullets left to be found is like saying we've already invented all things, and there are no more patents to file.

<comment><USER30> Really? That's a seminal paper for a reason.

Firstly, it's pretty obvious to a skilled developer what aspects of that program's complexity are accidental vs. essential. Layers upon layers of indirection for no particular end is one example of accidental complexity. As is tuning assembler for a particular processor.

Understanding and constructing the appropriate usability and function of your software for your target audience on the other hand, is essentially hard - it's "product/market fit" for software.

What past silver bullets are you referring to? Brooks' point is that individual technical gains don't tackle the essential complexity at its core, whereas his "promising attacks" have mostly been validated: buy vs. build, requirements refinement & rapid prototyping, incremental development, and great designers. These advances have had way more impact than, say, the move from COBOL to Python.

<comment><USER29> I completely disagree that it's obvious to a skilled developer which parts are accidental/essential. Programmers (and everyone else) often don't realize they have a problem or are missing something until someone solves it for them. Similarly, programmers implement the exact same concepts over and over, and many of them don't even realize all of the things they're implementing are specializations of general patterns.

As for past silver bullets, the move from assembly language to C along with some extra tooling was easily an order of magnitude difference in development speed.

<comment><USER30> So, what I think you're suggesting is that a developer wouldn't understand accidental/essential complexity differences until a more skilled developer figured out the essence of certain classes of problems and others learned to apply their experience.

But, isn't that the case with any domain built on knowledge? My point was that a skilled developer had learned much the state of the art knowledge up to this point, and understands the pitfalls over over-complicating a solution that one can get into with certain solutions of the problem.

Brooks' paper wasn't even getting deeply into what we are talking about, he was just suggesting that software development is inherently complicated, that it's always going to be hard, because unlike Newtonian physics, you can't wave away the complexities and distill the essence of a problem into simple equations. The complexities ARE the software. Abstractions, though helpful, are flawed and leaky, unless they're designed by a master.

If software development is a fundamentally hard activity, like playing a musical instrument well, you're not likely going to make it a "breakthrough" with a piece of technology, you're going to improve it with better programmers. A highly talented programmer will be less productive using COBOL and older tools and technologies, but will not be an _order of magnitude_ less productive. Back in the 80's, this was bitter medicine that management types had to hear, thinking that programming was rote activity with barely any need for higher pay or recognition of the 10:1 or more disparity in productivity among individuals.

<comment><USER29> > A highly talented programmer will be less productive using COBOL and older > tools and technologies, but will not be an order of magnitude less > productive.

I'm not sure about that, especially if you replace COBOL with assembly language. _Definitely_ if you replace COBOL with machine code encodings, or punch cards.

Part of the disparity amongst individual programmers can be attributed to tooling, and we have no way of knowing how much that is.

I think we can agree the paper is saying: "Programming is inherently complicated, and we predict that our current tools already reduce complexity almost as much as possible". I just disagree with that prediction, and think our tools currently encompass _massive_ amounts of accidental complexity which easily dwarf the essential complexity.

</comment></comment></comment></comment></comment><comment><USER31> This whole weird saga has led me to this thought: why are people so concerned with what /other/ people should learn? Why do you care?

It seems like the subtext is that if they know the things we know, they'll think the things we think. If we can just get people to be programmers, they'll see the world the way we see it. Or so the thought goes.

<comment><USER32> A rising tide of literacy lifts all boats, that's why I care. I still don't get why Atwood does, though.

<comment><USER31> There's a big difference between literacy and knowing how to code.

Literacy means access to the sum total of the world's knowledge. That's huge. That gives you access to everything if you're willing to put in the effort. That's freedom.

"Code literacy" means knowing how to tell a computer to do something reliably and the associated lessons that come with that.

That's good, but it's not the same. One is the ability to gain new skills at will, the other is just another skill to master.

I say all this as a coder who thinks its important, I just think the hyperbole around "programming being the new literacy" to be overblown

<comment><USER32> _Literacy means access to the sum total of the world's knowledge._

Funny you should use the word 'overblown' after saying something like this. Literacy, at best, gives access to the world's words, not the world's knowledge, and actually only the fraction of the words that are in the language in which one is literate. I'm not just speaking of natural languages, either. A considerable amount of the world's knowledge is expressed in the languages of mathematics and music, for which literacy in English is weak preparation. Another enormous chunk of the world's knowledge is experiential, for which any language is a weak substitute for apprenticeship (at best) or mere doing (at least).

The world's knowledge lies behind and endless chain of conceptual hurdles, and the ease with which one can jump over these hurdles while running on the legs of literacy is determined by everything else that one studies.

</comment></comment></comment></comment><comment><USER33> I don't know why this needs to be controversial. To keep it simple: Logic/algorithmic thinking skills -> good for most people, should be acquired at school, programming is one quite good way to acquire them (IFF done right) Actual coding skills -> pretty much only useful if you plan to work in software; depending on your role, essential (sw dev, but that takes more than codecademy...); desirable (product/marketing: you will better understand the tech team, how to prioritise, what's possible etc.); "nice to have" (everyone else).

So, I guess these coding schools are good, either if you want to learn a new way of thinking (and have lots of spare time and patience), or if you are a non-tech product person (as long as you realise that you're only scratching the surface, and that if you're short on time, maybe you should focus on getting things done).

</comment><comment><USER34> Intelligence/coding go hand in hand.

No matter how smart their arguments are, some coders in this "debate" unintentionally display the subtle insecurity that their special skill is coming to the masses and that fact will ultimately decrease their uniqueness, salary, and apparently...their self esteem.

If one does feel that twinge of jealousy or defensiveness, then perhaps the most progressive solution internally is to grow an identity beyond being just smart and unique and slamming less intelligent people when they try to get a nut in this World.

(Caveat: I'm as guilty as they come)

<comment><USER7> > Intelligence/coding go hand in hand.

Are you joking? There are tons of very intelligent people who know nothing about coding.

</comment></comment><comment><USER35> I think a way to counter this would be to collect short articles by people who learned to code because someone encouraged them to, and are benefiting from it. He argues that people who are going to be great programmers will discover coding as their passion just by looking around. I disagree. Many in my generation learned to code when a teacher showed them LOGO. How is that fundamentally different from organizing study groups, or trying to make a website, book, or email list that will get people who are new to programming to discover the joy of programming?

</comment><comment><USER36> after re-reading the original post few more times, I still think he meant just what the title said - don't learn to code unless you love coding and it's your passion.

</comment><comment><USER37> The way I see it, subjects taught in school are ranked according to their perceived importance:

1 - Math, english

2 - Science, PE

3 - LOTE, history, geography, music, etc

4 - IT, drama, shop, economics, etc

5 - Plumbing, mechanics, technical drawing, etc

Joel is, I think, arguing against people that say coding should be a tier 1 or 2 subject.

<comment><USER38> It is sad that economics is listed tier 4 and apparently as important (if not less important) as drama... Such common perceptions are probably why there are so many financially illiterate people and so much bad economic policy out there.

</comment></comment><comment><USER39> I like how in the first paragraph he assures himself that the criticism came from people who didn't read the article properly. After all, if you didn't read it properly you'd surely agree.

Poor way to bolster support for your follow up really, 'you didn't understand what I was saying, I'll use different words'.

</comment><comment><USER21> I appreciated his sharing the email from the attorney/CPA. Now I know there are others out there like me that enjoy computing more than counting money. We should start a recovering CPA support group.

</comment><comment><USER40> The author completely fails to understand that there are a large number of people who would benefit from programming but have been deterred from doing so.

</comment><comment><USER41> Off-topic, but why is he block-quoting his own story? When you are the original source, you don't need to quote yourself.

</comment><comment><USER42> It's been about 10 months since I started coding, I have to say it is totally enlightening skill. As a normal user, I never knew the way computers work. When once my PC was attacked by virus, I thought it was actual biological virus. Yeah, I mean I was slave back then.

Now I am trying to be master. Is there anything wrong? PS. Car and Computers are different IMO.

</comment><comment><USER43> The fact remains that literacy with computer syntax is what literacy with arithmetic was a hundred years ago. There are so many ways to take advantage of it today, it is insane not to encourage just about anyone to stick with it long enough to see what possibilities might be revealed.

<comment><USER7> What is "computer syntax"?!

<comment><USER43> The syntax of C and derivative languages.

<comment><USER38> Everybody should learn to program in C, drive a freight train and recognize symptoms of hoof diseases in a horse.

</comment></comment></comment></comment><comment><USER44> Learn enough about code to read others' programs.

Learn enough to not be spied on and manipulated by sociopathic web developers and cybercriminals.

Maybe you can contribute something back to programmer/user community that demonstrates ethical principles. Maybe you found a startup. Maybe you make a career out of writing programs.

At the very least, you make it harder for the bad actors who use their coding skills to take advantage of people who are not tech savvy.

<comment><USER45> This is exactly what I am striving for. I don't want to program full-time, but I like to be able to understand enough and be able to muddle through somewhat if there's a project I feel like working on.

Maybe I end up doing more than that, but it's nice to have, like learning a foreign language. Not everyone becomes fluent, but a lot of people know enough to get something out of their studies.

<comment><USER44> What sort of project?

Are you the type of person who like to take things apart and put them back together? Do you like to figure out how things work?

<comment><USER45> I am.

I like restoring old computers, replacing capacitors etc. to get them running again, keeping my bike in order (though not my car), and messing around with HTML for simple things on a blog. I'm working on learning Ruby and slogging along iOS tutorials while designing my own board game.

I did take a few CS classes in college but was a liberal arts major. If I had known more, might have flipped it, but at the time thought programming would mean cooped up in a cube all day.

<comment><USER44> "programming would mean cooped up in a cube all day"

Unfortunately, I think for most programmers, it still does.

My guess is Atwood was once of them.

When I started to reach some sort "enlightenment" (series of epiphanies, ah-ha moments or whatever you want to call it) with respect to "programming" I found that I wanted to share my knowledge with others. I think I still have that urge now and again. (And even now I'd still be happy to show you or anyone what I've learned if they were really interested. However I must admit I've never had much interest in computer games or understanding how they work, and I prefer using Lua over Ruby.)

When I keep seeing these ridiculous blog posts like Atwood's I have a hard time seeing his sort of thinking as helpful to anyone (even himself). That's just how I see it. But then, what do I know? (A chorus of underappreciated programmers in cubicles responds: "Not much!" ;)

They're right. But so am I. In the grand scheme of things, none of us really knows much. That much, I do know. (Credit: Socrates)</comment></comment></comment></comment></comment>


Changes you might have missed coming in Ruby 2.7 - <AUTHOR> https://sourcediving.com/less-known-changes-in-ruby-2-7-8d5db660370f <comment><USER2> I don't understand the last fix. Why does calling "Hello, world".split spit out a warning about $? Shouldn't the string and interable libraries be modified so split and join work without depending on deprecated features?</comment>


The Sound of the Dialup: an Example Handshake - <AUTHOR> http://cdn.arstechnica.net/wp-content/uploads/2014/01/Q3lKIr1.jpg

<comment><USER2> And for those who, like me, like seeing others wonder "WTF!?", make this your ringtone:

[http://evilrouters.net/56k.mp3](http://evilrouters.net/56k.mp3)</comment>


What Kinds of Jobs Exist At Startups for Non-Technical People? - <AUTHOR> http://www.jasonshen.com/2010/what-kinds-of-jobs-exist-at-startups-for-non-technical-people/

<comment> old-gregg Sales! Oh my god we'd kill for a great sales person. In our case we deliver _exactly_ what so many of our clients were looking for and could not find [see my profile], simply because selling yourself properly, standing out of the crowd, separating signal from noise in your own sales pitch is ha-a-a-a-ard.

</comment><comment><USER2> My question is when do startups begin to add Product Managers?

From my experience in the early stages the company hires as many engineers as possible, esp after funding.

Should PMs have to make a case for their position? Do founders mostly act in this role?

All things considered, it I understand it varies from startup to startup, I am just trying to understand my best place as a PM in the startup community.

PS- Another Great Article by Jason- [http://www.jasonshen.com/2010/things-ive- learned-in-three-we...](http://www.jasonshen.com/2010/things-ive-learned-in- three-weeks-at-a-startup/)

<comment><AUTHOR> I think most early-stage startups have founders driving the product development. Most product manager positions I've seen on job board are for larger, more established companies - often it's like "Product Manager for Mobile" or "Product Manager - Search" so specific pieces of the product. I'd also imagine that a lot of PM's come from inside the company.

</comment></comment><comment><USER3> You mention product managers here, while I certainly agree with you that this isn't a technical job per se, most job ads mention a CS-related degree as a requirement. I'm always looking at PM positions in the valley, but I can hardly find a job opening that does not require a BA in CS.

What would you suggest to do as a non-technical person trying to get into PM? Could anyone share a story/some tipps here?

<comment><AUTHOR> Looking at some of the comments you've made on HN its seems like you're not totally tech-ignorant. What do you do now? I would say that if you don't work at a startup now, join one where it's small enough that you can actually talk to/interact with developers. Get experience communicating things to them and understand the development process - then try to make the leap within your firm or perhaps to a different firm as a PM.

</comment></comment><comment><USER4> While there is always room to create your own role depending on what you bring to the table, in my existential struggles on this topic recently I have come to the conclusion that there isn't really a very satisfying role to be had unless you're able to really fill a niche well, or have excellent timing.

People for non-technical roles for startups seem to be much more fungible -- still hard to find great people, but a much larger pool to search from than just for developers.

</comment><comment><USER5> So would you consider designers as non-technical people, in a similar role as product managers? Or take the Steve Blank view and lump them in with engineers as the "solution team"?

<comment><AUTHOR> I was not sure what to say about designers. I had considered putting them with even a bigger caveat than with product managers, but decided that no - designers that are worth their salt are highly technical. They don't necessarily BUILD FEATURES but they are doing things that require advanced technical skills.

</comment></comment><comment><USER6> I would add to his definition of BizDev:

\- Responsible for assisting in money raising rounds.

\- Finding potential buyers / aquirers.

\- Working with CEO (if not the CEO) to define hard line business objectives.

</comment><comment><USER7> Secretary

</comment><comment><USER8> What people will say: read the comments in this section. Reality: Mail room.

<comment><USER9> Startups don't usually have mail room jobs.

<comment><USER8> Precisely.</comment></comment></comment>


Vikings web hosting – libre software, hardware and sustainable energy - <AUTHOR> https://vikings.net <comment><AUTHOR> Disclaimer: I have no connection to this organisation, this is not an affiliate link, I have no experience of their service. Looks interesting, though.</comment>


The app boom is over - <AUTHOR> http://www.recode.net/2016/6/8/11883518/app-boom-over-snapchat-uber <comment><USER2> I think the app boom is in decline, but I really don't see how illustrating lower growth for the 20 most well known apps demonstrates this. Less people downloading Facebook, WhatsApp, or Instagram? Account for how many people already have it! There could be a saturation of those very well-known apps.

There's a lot more to consider once you look at how the entire app market is changing, rather than just the very top.

<comment><USER3> Anecdotal, but I don't use an app for any service that offers substantially similar service on their website. For instance, Facebook and Amazon have horribly bloated apps. They run in the background and eat up my battery. Their apps ask for permissions for unfathomable reasons. I place a link to the website on my desktop instead, since I can at least trust my browser won't eat up all my battery after I thought I closed it.

While I'm more tech savvy than most people I know, a lot of my friends have uninstalled the Facebook app as well, for a variety of similar reasons. Several have noticed what a battery hog it is, others got pissed off when Facebook added the messenger app, and others did it for privacy reasons.

Interestingly, I've noticed I use Facebook a lot less since deleting the app. I should see how my friends usage trends compare. I wonder if the friends who deleted the app have noticed a decrease in their Facebook usage, or if all my friends have decreased their usage and it's just a function of us being older/in different stages of life.

<comment><USER4> I'm relentlessly unwilling to use banking or shopping apps for similar reasons. Not only are they bloated and wasteful, they're typically pretty opaque, with a totally unknown attack surface.

My bank is barely competent to use HTTPS with valid certificates - why on Earth would I chance using their new-and-untested app when I can't see if it's worse than their website?

<comment><USER5> For banks specifically.. I can use an app to deposit checks via picture. I cannot do this via the website. So of my 20 apps I have installed, something like 3 are banks, 10 are games, and 7 are utilities...

<comment><USER6> It's a sweeping statement to say that banking apps are bloated. Some are very well made. I'm pretty happy with Chase's banking app to say the least.

</comment></comment></comment></comment></comment><comment><USER7> Such clickbait.

Sure the gold rush, get-rich-quick-cause-there-are-two-of-you era for mobile apps is over. But the boom for mobile apps will never be over, much like web apps will never be over. How many billion dollar websites emerged a decade after everyone said the web boom was over?

Apps are merely a distribution platform for services. As the world evolves, we will never run out of needs for services.

As long as you're solving a need and you're capable of communicating it to your target market, you will make lots of money.

Apps and software in general will forever be more efficient than their predecessors, and thus, IMHO, the app boom has only begun.

<comment><USER8> >But the boom for mobile apps will never be over

that is, by definition, not a boom. A boom is a period of unusual, unsustainable growth. The boom is over and the app market is shifting into a normal sustainable market where good products and services are valued and low- effort or less useful apps have a hard time succeeding.

The headline wasn't "apps are dead" \- just because you misunderstood it doesn't make it clickbait.

<comment><USER9> I'm not sure that the app economy wasn't a temporarily bubble. We've yet to see many apps reach the sustainable part.

Very few apps are successful charging the customer. A few games are successful selling in-app purchases, but even those almost never last. Social apps some times get popular but rarely find a way to monetize, they wind up selling themselves to larger businesses who use them as a loss-leader.

Compared to desktop and the web, the number of sustainable businesses on mobile apps is depressingly small.

</comment></comment></comment><comment><USER10> This article's primary source is a ComScore report purporting to show a decline in mobile app downloads per user.

Is there any reason -- really, any at all -- to believe that ComScore has accurate data on this?

I can't think of one. (And I did want to read about their methodology but spam is the price of the "Whitepaper" download, so I didn't get there yet.)

Does Apple give them this information on their customers' habits? I don't think so.

Does Google? That wouldn't be as exotic as Apple doing it, but still -- I don't think so.

Facebook?

So what exactly is this data based on?

I'm not even arguing that the conclusion isn't true. I'm arguing that ComScore, and Quartz, and Recode, and Peter Kafka too have NO IDEA what they're talking about here. They are pulling numbers out of thin air, waving their hands, and declaring their suppositions confirmed.

Oh wait, as a secondary source they have "Ad Intelligence" from "SensorTower."

So, self-reporting by ad-focused app companies that don't crunch their stats internally? And nothing at all about every other app in the world?

OK, to be fair maybe it's not just "thin air." Maybe it's more like hot air.

Anyway, as a programmer who has several times almost-but-not-quite gotten into the app world, it strikes me that you'd be crazy to do an indie app as a means to financial glory, but if you have a Big Idea these days in the consumer space you probably have to have a good app for it. Maybe several. Which means the "boom" or lack thereof depends a lot on what you think the "app business" is.

My source: anecdotes and extrapolation. Which admittedly may not be more accurate than dodgy pseudo-statistics, but I'm sticking with it.

</comment><comment><USER11> I'm tired of all these useless (for me, I'm sure they're probably useful for others) apps. Recently I uninstalled most of the third-party apps from my phone, and it's been great. I've noticed my battery life has improved, and it reduces the number of companies that track and nag at me.

I'm down to ten non-Google apps, and three of em are work-related. This means that, excluding Google (which I've already accepted tracks my every move), only seven apps are solving some problem of mine. And out of those seven, I only use two on a daily basis.

The most important app I have on my phone is Firefox. You can install addons for uBlock Origin and HTTPS Everywhere, which makes mobile web very pleasant.

My biggest problem with native apps is that they often show a total lack of respect for my time and attention. I don't want useless notifications that try to increase my engagement (looking at you Twitter and Instagram). I don't want you running in the background for ANY REASON at all unless I've given you explicit permission.

There's too much focus on trying to jam more and more features into apps. I want very fast and highly stable applications without any bullshit, and I'm willing to pay a high price tag if that's what it takes.

<comment><USER12> Don't blame the apps, blame the OS. iOS can block apps from running in the background and can stop them from using notifications.

<comment><USER13> > blame the OS. iOS can block apps [...]

Well, to be fair, you can disable notifications from apps since android 4.0 (which is a long time back)

And Android 6.0 and up should automatically disable background running apps ([https://developer.android.com/training/monitoring-device- sta...](https://developer.android.com/training/monitoring-device-state/doze- standby.html#understand_app_standby)) unless there is a good reason for them to be running

But apps can still work around these restrictions (even on iOS; for eg the facebook app was caught "accidentally" playing silent audio.) Even if that was truly a bug, the point remains that it's better to use the website unless you want something specific (offline access, push notifications, etc...)

</comment></comment></comment><comment><USER14> Is it just me or is it obvious that "the app boom is over" . . . until another great app worth downloading comes out . . .

<comment><USER15> Yeah but your app didn't used to have to be any good for people to download it.

<comment><USER16> Yeah, it just had to make fart sounds.

</comment></comment></comment><comment><USER17> The download of new apps may decline, but with Google Instant Apps arriving, more users will use apps without installing.

<comment><USER18> Google Instant Apps will fade away after a couple of years because nobody gets it and it's a solution looking for a problem again. They specialise in auto- failing ideas like that.

<comment><USER19> I disagree its a solution looking for a problem.

The problem is most internet/computing usage is done on mobile. Increasingly, this information is inside of Apps. This makes Google's search results less and less effective overtime.

That is, unless I can click on a google search result and end up in the middle of an app I've never downloaded.

I think a better criticism is that Instant Apps is attempting to rebuild internet, using apps. A destination I can go to, and only download what I need to run the experience in that view? And I can still click on other things and load those when I need it? It's called surfing the web, dude.

<comment><USER20> >> The problem is most internet/computing usage is done on mobile. Increasingly, this information is inside of Apps. This makes Google's search results less and less effective overtime

Google's problem, not users.

</comment></comment></comment></comment><comment><USER21> The data in the article doesn't really show anything people didn't already know. There's no surprise that the download rate of the top 20 apps will eventually decline. I mean, look at their saturation amongst users, it's still ridiculous.

What's interesting is going to be the new subscription model incentive that gives publishers an extra 15% for subscription retention after the first year. Don't forget, App Store 2.0 is just around the corner and it could change the game. Not saying that it will, but it could.

<comment><USER6> Honestly interested in reading some good content on App Store 2.0 if anyone has a quality read.

<comment><USER21> I think it was top of HN yesterday: [http://www.theverge.com/2016/6/8/11880730/apple-app-store- su...](http://www.theverge.com/2016/6/8/11880730/apple-app-store-subscription- update-phil-schiller-interview)

</comment></comment></comment><comment><USER22> how can you say anything about a market when all you are looking at is the top 15 apps? Seems absurd. Maybe the bottom 50 pct have seen increased adoption? We don't know.

<comment><USER4> An extremely strong app market would actually produce the same results as a weak one for the top few products.

If people are eager to download apps, high-profile products like Instagram hit saturation quickly and a drop-off in downloads even though their user base is massive. If people are hesitant, they get some downloads and slow-but-steady growth. If people are unwilling, they don't get users at all (but we know what hasn't happened).

There's really no value for anyone else in a top-apps evaluation - the rest of the world isn't plastering Times Square in ads.

</comment></comment><comment><USER23> A big part of preferring a website over an app for me is sandboxing. A website via safari can't access and email all of my contacts, or record my location via GPS, or any other nefarious thing I'm constantly on my guard against.

By forcing everything through Safari I have reasonable protections against these privacy violations, as well as good blocking of ads and trackers.

</comment><comment><USER24> The best of Web came after the dot com burst. In fact to gain maximum from a platform it is not enough if the platform got popular what matters is how many people trained to write software for that platform are available and how cheaply. Both Android and iOS developers are expensive compared to PHP developers.

I think the best of Mobile is yet to come.

</comment><comment><USER25> So all they determined was everyone already has the top installed (and often pre-installed) apps already installed? What a surprise.

Also I would love to install more apps but to do so I have to clear space on my phone, and the apps I already have are slowing my phone down and eating my battery. For me it's always a matter of resources.

</comment><comment><USER26> I am not in the loop for latest in Android development. Can someone, who is, comment towards whether they think the recently announced Android Instant Apps will reverse this trend significantly?

<comment><USER4> It should be a good thing. As is, there are lots of one-off use cases for apps where people simply choose to do without.

As an example, if I'm buying a product online (and not from Amazon), there's probably an app for the marketplace that's more mobile-friendly than the website. But right now, I still choose the website because it's not worth actually downloading something. With Instant, I can pick the better one without the hassle and commitment of adding something to my phone.

</comment></comment><comment><USER27> Yup, basically it's now a _mature market_ rather than a gold rush.

This is actually _a good thing_ but not if you were looking for a quick buck.

<comment><USER28> It has not been a gold rush since maybe a year or 2 after the App Store became available (July 2008, so it's been over for a log while now).

<comment><USER27> I'd disagree. It's not the massive gold rush of those early days but it's still been in that cycle up until maybe a year or two ago.

</comment></comment></comment><comment><USER29> If apps are $1 per download, you need 100,000 downloads a month to have $100k a month in revenue. That's what you need for an office space and a few people working full time.

How many apps have 100,000 downloads a month.

Apps need subscriptions to survive, that App Store change can't happen soon enough.

</comment><comment><USER30> I certainly have no interest in accumulating more of them. It's actually nice to delete one whenever I realize I don't need it. Why do I even have so many to begin with? I hate these damn things.

</comment><comment><USER31> Shouldn't this article have focused on number of downloads per person per month or year or whatever? It seems like that would tell a better story about the app boom being over.

<comment><USER32> I think they did provide a link at the top of the article that said Most US Smartphone users download zero apps per month [0] [http://qz.com/253618/most- smartphone-users-download-zero-app...](http://qz.com/253618/most-smartphone- users-download-zero-apps-per-month/)

</comment></comment><comment><USER33> Many of the ads that ad-supported apps use to monetize are ads for other apps. That's not sustainable, and the end of that will be the end of the boom in ad- supported apps.

</comment><comment><USER34> I think "interest in apps" (i.e. people experimenting with, talking about, and sharing apps) plateaued in 2012. You can see this effect on Google Trends.

</comment><comment><USER35> I am surprised that Tinder didn't crack the top 20.

<comment><USER36> Only so many people are single and looking, and of them, only so many want what the app offers to single people. Even if the second number is 100% of the first, it's limited.

<comment><USER35> I get that, I'm just surprised that it got beaten by something like Watch ABC. Doesn't Tinder have close to a hundred million users?

<comment><USER20> >> Doesn't Tinder have close to a hundred million users?

Active users, or total accounts? Tinder seems like something you'd use for a few months and either hook up or give up and not use it again.

</comment></comment></comment></comment><comment><USER37> I've been pointing out the bursting of the app bubble for a while now, this is a trailing indicator. Progressive Web Apps make way more sense.

<comment><USER38> ...and are way, way more limited in terms of leveraging device functionality.

I'm not hating on mobile-optimized web apps, just making the point that they aren't a one-size fits all solution, and as such, I don't think a blanket statement like "Progressive Web Apps make way more sense" really works.

<comment><USER32> There are only a few apps that leverage device functionality e.g. gyrometer, fingerprint, etc. Even location and camera are now available for web apps. So for a majority of native apps a web app makes more sense.

<comment><USER39> Fingerprint sensor for authentication is a big hole. Mint integrates with TouchID, and it's great. But my bank's webview-wrapping "app" requires a login and password every launch, and it's very annoying.

<comment><USER32> Apple might be making fingerprint sensing available for the web soon

[https://stripe.com/apple-pay](https://stripe.com/apple-pay)

</comment></comment></comment></comment></comment><comment><USER40> Providing value to people will never be over.

<comment><USER41> There's just a lot less low hanging fruit...

<comment><USER42> Right, which is totally understandable given that the app market has been going for about 8 years now. There's obviously a shift towards apps that provide more longer term and reoccurring value to customers which is great for consumers and for the businesses that build/ship these apps.

</comment></comment></comment><comment><USER42> You could also title this article "The App Economy Has Matured", but that wouldn't get as many clicks.

</comment><comment><USER43> It doesn't help that Apple has been strangling users with 16GB of storage for the base iPhone for years.</comment>


Stop listening to music while you work - <AUTHOR> http://finance.yahoo.com/news/neuroscientist-shares-10-minute-trick-182900218.html <comment><USER2> Maybe the enjoyment you get from listening to the music is valuable in itself. There are worse things than pleasure. Just a thought.

<comment><USER3> And maybe that enjoyment will make you a happier person in general, which will in turn make you more productive because you won't worry and second-guess yourself so much.

</comment></comment><comment><USER4> The real conclusion is that, all else equal, music decreases cognitive performance (memory tasks, mostly) a bit. It doesn't conclude that actual workers are more or less productive. Enjoying yourself more, even at the expense of cognitive performance, might be far more valuable in maintaining motivation and productive work.

A quick search didn't turn anything up in the literature, but my guess is that some distraction is beneficial in real-world scenarios. The challenge of productive work, for me, is generally staying on task, not summoning my cognitive abilities. If music can redirect or 'absorb' stray attention, it may assist in staying on task. Certainly a wealth of experience seems to support this; I have a very hard time getting things done without music.

TL;DR: I wouldn't extrapolate real productivity from memory tasks in a study.

</comment><comment><USER5> I notice this effect really strongly when there are lyrics in a song but without lyrics and with electronic music that is very repetitive it can be more so on the beneficial side for myself, the effect that the complexity of the music has on the listener is something I'd like to see in one of these studies.</comment>


Peter Norvig: Tweaking Bayes' Theorem - <AUTHOR> http://java.dzone.com/articles/tweaking-bayes%E2%80%99-theorem In Peter Norvig's talk The Unreasonable Effectiveness of Data, he describes a translation algorithm based on Bayes' theorem. Pick the English word that has the highest posterior probability as the translation. No surprise here. Then he says something curious. <comment><USER2> This is more of tweak of naive Bayes than Bayes' theorem and I suspect he is being a bit tongue in cheek and not letting on whats behind the tweak.

I am sure you have heard that naive Bayes makes gratuitous assumptions of independence. What is not mentioned as often is that it also assumes the document has been generated by a memory-less process.

So if I were to generate a document according to the model assumed by naive Bayes, and I want to decide if I should concatenate another "the" in the document, then I dont need to keep track of how many "the"s that I have already added to the document. As a result the probability of multiple occurrence _n_i_ of a word _i_ goes down exponentially, like this

      P(n_i) = p_i^n_i.

Many words do not behave like this. Their probability do not go down monotonically from the start, rather, for words like "the" their probabilities (conditioned on their history) climb initially and then go down.

Naive Bayes works surprisingly well in spite of their grossly violated assumptions. There are many explanations for that. However, we usually forget that to make NB work, we have to throw away "stop-words". Among them are those exact "memory-full" words that violate NB's assumptions.

Lets get back to word frequencies: A model that fits word frequencies quite well is the power law. <http://en.wikipedia.org/wiki/Power_law> They look like this

         P(n_i) \propto  n_i^c

where _c_ is a constant for that word id _i_. For English, _c_ usually lies in the ball park of -1.5 to -2.1

The tweak that Norvig mentions is not an exact match for power law assumptions but it comes very close. Its using a power law assumption but with sub-optimal parameters. In fact using the power law assumption and with their parameters estimated from the data you could get an even better classifier. Though be careful of the industry of seeing power laws everywhere. Log normal distributions can look deceptively similar to a power law and is more appropriate on many such occasions.

Yeah Naive Bayes has a bad assumption of independence, but there is no reason that they have to be memory-less too and that is partly what the tweak fixes, and the theorem isn't really being violated.

<comment><USER3> What does any of that have to do with modifying P(sentence) relative to P(sentence is a translation of X), though? Everything you're talking about involves getting that initial P(sentence) estimate, but I don't see anywhere in there why uniformly raising all naive estimates to a power would come close to accounting for power law word frequencies (which presumably would be incorporated in the initial model that gave us a P(sentence) estimate).

According to Norvig, the real problem this is intended to address is that P(sentence is a translation of X) tends to be a crappy estimate, and that in fact P(sentence) itself is much more reliable. Which would seem to conflict with your suggestion that this is really applying a correction for P(sentence).

<comment><USER2> Ah I see your point. Norvig uses a positive exponent on the prior whereas I have written it in the form where there is a negative exponent on the conditional. According to Bayes, we predict class 1 when

       P(C_1) P(words | C_1) > P(C_2) P(words | C_2)

The positive exponent on P(C_i) and a negative exponent on P(Words |C_i) are equivalent as far as classification is concerned, one needs to take a suitable (negative power) on both sides so that the exponent on the conditional becomes one and you end up with a positive exponent on P(C_i).

Thanks for catching this.

The constant _c_ can and do vary with the class label. As a result the Bayes classifier will use conditional distributions that have a fixed exponents. Typically however these will depend per word and per class. The model that Norvig is using a very simple variant where he is fixing the exponent. As I said its not the exact expression that one would have obtained by assuming a power law, but is very similar.

</comment></comment></comment><comment><USER4> This has been done for the last 20 years (sort of in secret) in the Automatic Speech Recognition community. In brief, if A is the auditory observation you're trying to transcribe and W a possible word sequence, then you use Bayes law to rewrite

        P(W|A) = P(A|W)P(W)

The first is known as the auditory model which is responsible for transcribing sounds into phonemes and potential words. The second is the language model responsible just for ranking likely word sequences.

The first tends to be a lot harder than the second, it's models are fuzzier. So to compensate, the real, in practice model is

        P(W|A) = P(W|A)P(W)^a

where a is a positive number. I forget what the typical value of the fudge factor is, but generally you use cross validation to optimize it.

Exactly one class told me about the existence of it. Most others pretend like it's not there.

<comment><USER5> Iwwelewant Cowwection! Actual Bayes law is:

P(W|A) = P(A|W)P(W)/P(A)

<comment><USER3> If you're maximizing over all possible values of W, A never changes, which is why the /P(A) will usually be omitted from the function you're maximizing.

You're right, though, it shouldn't be written as P(W|A) in that case, that's misleading.

</comment></comment></comment><comment><USER6> I just saw Norvig give this talk. The quote cuts off before he offers his explanation: the 1.5 means 'trust this data set more.' For whatever reason (e.g. bigger sample size) the probabilities from that set tend to be more accurate.

It's not some sort of deep mystical counter example. It's a clever tweak that comes from the observation that empirical observations are not uniformly reliable.

<comment><USER7> As it's probability^1.5, it makes the probability lower, and not higher, i.e., x^1.5 < x if 0 <= x <=1.

I think this might be a tweak due to data scarcity. To compute p(e), there's tons of data to build a model. On the other hand, p(e|f) requires for you to get a lot of parallel corpus (texts that's written both in English and Foreign language) which is not easily doable.

As a result, p(e)^1.5 * p(e|f), lowers p(e) as it's supposed to be too high compared to p(e|f), imho.

<comment><USER8> I think it's more helpful to think of it as a a gamma correction with γ > 1, rather than saying higher or lower. Or as I said in another comment lower temperature, in that it concentrates probability around its peaks.

</comment></comment></comment><comment><USER9> There are a few things that really bother me about this post and many of the comments regarding it.

First, let me address a common theme that I see underlying this discussion and many others: theory vs reality. The common claim seems to be that scientists or other members of the academic community are often disconnected with "the real world" and blindly hold to models that don't quite work. This is both a damaging idea and a false one.

Science and math are two different things and _science_ has always been about _the real world_. The key difference between science and math (or theory as some like to call it) is _empirical data_. In the physical sciences the fact that collected data contains errors or biases is a fundamental part of the process. Characterizing and understanding the error or other problems with collected data is critical to doing good science.

It seems that people who study _computer science_ often forget this. When does computer science change from mathematics to a proper science? When you start applying it to real data or to real systems that contain imperfections. Situations precisely like the one being described. In this case there is nothing wrong with Bayes' theory and as many have pointed out the theory is not being tweaking at all. Rather, change in the mathematics is to address a shortcoming of the data. This is simply how science should work. Science is the real world and if you think otherwise you are not understanding or practicing good science.

My second criticism is with the suggestion that we should not care _why_ this change improves results. Now, John Cook is not actually advocating this, but a casual reading of his blog post could certainly be read that way in error. He is saying that it's ok to _use_ an algorithm in practice even though we don't fully understand it. In so far as it's been properly tested, I doubt most people nor most academics would argue with this.

But it's still important to try to understand what is going wrong in the application of the mathematics such that a fudge factor is required. Very often, understanding the root cause can lead to better methodology or a better modelling of the data.

</comment><comment><USER10> Some comments are on the original blog posting: [http://www.johndcook.com/blog/2012/03/09/monkeying-with- baye...](http://www.johndcook.com/blog/2012/03/09/monkeying-with-bayes- theorem/)

</comment><comment><USER8> The biggest difficulty in Bayesian modeling is usually choosing the prior i.e. the P(W) term. There are a few maximum entropy techniques, but basically the rule is: "what works best".

In this case P(W) is a 1-gram probability which is clearly wrong, because it amounts to saying that every word has a probability of appearing that is independent of its surroundings. For example, while 'the' is very likely to appear you don't want it to appear next to another 'the'.

Even when using more sophisticated priors that take n-grams into account, one never has a real model of the English language, because that will depend on the context, the period in which it was written, the linguistic domain…

That is why tweaks are actually justified theoretically.

Another interesting thought that popped out in the comments to the original post is that if one uses a statistical mechanics interpretation of probability, where P(W) = exp(-H(W)/T) where H is some energy function and T is temperature, One can interpret the 1.5 factor as lowering the temperature and making the probability less fuzzy.

</comment><comment><USER11> This happens all the time in machine learning applications. Or many other engineering disciplines I dare say. If theorems and laws never need some tweaks here and there in the real world, what do we need hackers and engineers for?

<comment><USER12> A good example is regularization. You have nice proofs saying that your classifier is optimal, then you tack on a regularization term to it, which breaks your optimality proof but improves your classification accuracy. It seems unexpected, but it's not really all that surprising when you get down to the details of it.

<comment><USER2> Oops hit the down-arrow without intending to, my bad, hope someone will fix that.

There is nothing tacked on about a regularizer though, it is very sound even in theory. There are several ways to look at it. One way is to see it as a natural consequence of Bayes law, it is just the log of the prior probability. There are certain things we know or assume about the model even before looking at the data, for example we expect the predictions to have a certain smoothness etc, all this knowledge can incorporated into the prior model, and that is what the regulaizer is. Another way to look at it from stability of the estimates of the parameters. I find the former more convincing.

<comment><USER12> Absolutely, there's a pretty clear mathematical justification for regularization. However, it is very literally tacked on at the end. Take logistic regression, if you minimize the cost function without regularization, you get a max-likelihood estimate of the regression parameters. But what we do is to add a regularization term to that cost function. Minimizing that cost- function will no longer give a MLE solution, but it will (likely) give a better solution. It all comes down to understanding that the MLE property is an asymptotic result. Same goes for covariance matrix estimates, where you have regularization procedures that are guaranteed to never be worse than the plain MLE solution.

</comment></comment></comment></comment><comment><USER13> You can't justify this using theoretical Bayesian statistical theory in any easy way that I see. However, one can view the problem as max log(P(W|A)) + lambda * log(P(W)) and here log(P(W)) is a smoothness or regularization term and log(P(W|A)) can be seen as relating to the expected loss of the function (e.g. use Markov's inequality). Regularization has plenty of theoretical justification in machine learning for improving performance on unseen data (that is reasonably similar to the training data).

This is very much a discriminative tactic in disguise.

</comment><comment><USER14> I've done this before, to weight some properties higher than others. I searched for the exponent, via simulation and cross validation.

It works.

</comment><comment><USER15> Bypassing maths to make a better model? This is called machine learning (-;

</comment><comment><USER16> Could this be considered a weighted iteration?</comment>


High Schooler Opens Ultimate Ugly Christmas Sweater Store - <AUTHOR> http://www.ultimateuglychristmas.com/

<comment><USER2> If the guy/women who created this reads it, here are two things to consider.

1) Be really specific about shipping times, people will logon looking for a sweater for a party in 3 days, or 5 days etc. and it will probably speed up the order decision if they know how many days it will take.

Worst case, they see that they won't get it in time and move to Amazon... But that will be the final result anyway. Might as well be up front so that if I login 5 days before the party and it takes 4 days to get it, I'm set and need to order ASAP.

2) Photos are good, but most large companies know it is better to have older models. mid-late 20s. That should also improve sales to older demographics, (i.e. those with disposable income to buy an expensive (high margin) ugly sweater.

Extra: Don't forget the holiday party season is coming to an end quickly. If this is running and promoted next year, you should do a lot better than this year. When you do your sales projections, keep in mind that almost no one will order one of these after Dec 18. And I would expect sales to peak sometime around Dec 12 at the latest. Your optimal selling season is likely Nov 31 to Dec 12. In otherwords, smooth things out this year and go for it next year. This is a great idea and could be a good base for other seasonal sales.

Good luck!</comment>


If the Airline Industry had no rules - <AUTHOR> https://plus.google.com/102189668488614533517/posts/JmaJk5N8v4p

<comment><USER2> Wind turbines on an aeroplane? What does he think they are, perpetual motion machines?</comment>


Ask HN: GMail's reputation/usefulness amongst spammers? - <AUTHOR>

First off: No, I'm not a spammer, nor am I in any way affiliated with that particular part of our networked world. What got me on to this question is GMail's track record with keeping spam down (at least in my inbox).<p>My question is, has GMail reached such good spam-blocking/-flagging efficiency that when spammers get new lists of potential victims, do they just auto-purge all @gmail.com addresses from the list first? <comment><USER2> Like you, I have no ties with the UCE industry, but here are my guesses regarding this topic.

I highly doubt they purge gmail addresses. I still get spam in there. And incremental costs are so minimal to spammers, that why would they bother? That's kind of the whole reason spam works despite microscopic conversion rates.

I also doubt that google shares their anti-spam tech or reports with other mail providers. Each company wants to keep their proprietary stuff secret, and anti-spam tends to have a bit of secret sauce. Now, say google, microsoft, and yahoo got together and shared reputation information, you might see spammers start to avoid those systems (at least from their main botnets) in an effort to not hurt their "reputation".

By and large, though, I just think they are willing to spam any address that they think has a small chance of getting to a person. Frequently they're run by bot nets at such small incremental costs. There's no compelling reason for them to do this.

FWIW, using the Pivotal Veracity / Returnpath tools (which estimate delivery rates by using seedlists), I've found that MSN is much more likely to mark something as spam, compared with gmail. Weird, I know.</comment>


Ask HN: Pocket Server for Digital Nomads - <AUTHOR> Hi All,
So I am considering an idea that I may want to work on for 2020, but I wanted to get some feedback on it first, to see if it's a pain point that others have.
I want to have a pocket sized Linux server with 2 X M.2 SSD slots for a RAID1 setup, on board SD card readers for Full Size and Micro SD cards, and on board WiFi, and build in battery that will allow it to run without external power for 10 hours or so, and of course, onboard gigabit Ethernet.
The pain point is having access to a local, RAID 1 redundant, small and portable server for development, backup, Camera SD card file management, and basically having a pocket sized (size of a cigarette pack or current RPi) Linux system that I can use from an iPad or any other device.
I am considering using RPi Compute module for the CPU/RAM and make a custom motherboard with 2 X M.2, WiFi, and SD card slots on board. I have experience designing hardware like that, and could probably build it in 60 days and through it on Kickstarter or such.
But I would really appreciate some feedback first. Do you see your self buying such a device? What would you use it for? What would you want it to have? Do you want to work on it with me? How much would you pay for such a server?
Thank you for the attention and I appreciate all feedback. <comment><USER2> I think I imagine me buying a device like that, but not sure if I actually would. In some way the cards are attractive, but also would be a considerable nuisance in conception when thinking of the device so that I would forebear at the final point of purchase.

I am more learning towards something like an Ocean server [https://getocean.now.sh/](https://getocean.now.sh/) but I would like there to be some tool to easily associate it with a wireless monitor and keyboard. By easily I mean no more cumbersome than it is to plug in a wired device, which seems unlikely to be the case.

<comment><AUTHOR> Ocean server is pretty close to what I want, just doesn't have the storage I would like to have, and the CPU is a bit slow.

Currently I use RPi 4. I plug it into the USB-C port on my iPad and it's picked up by iOS as an Ethernet gadget. The RPi acts as a router and has a static IP address over USB. So all I have to do is use a VMC app to connect to it. It's as simple as plugging in one cable and starting one app.

I want to stick with RPi architecture because I want it to be really flexible for people to use any of the Raspberry Pi compatible distributions on it.

The SD cards are mostly for video production. I want to have a one button clear SD card feature, where I can insert an SD card, press one physical button, and a script would copy all of the files from an SD card to the destination directory on the main SSD storage drive, and then empty the card. There would be an LED light to indicate progress.

Maybe I am making something only I would really care about here. Thank you for the feedback.

<comment><USER3> > Maybe I am making something only I would really care about here. Thank you > for the feedback.

I would like to have something like you mention, but for pictures.

I have a ton of family pictures to process (and back up) and that kind of server would be great just to clean the SD cards (and make a cloud copy of everything, btw).

I guess, you're not alone ;-)

</comment></comment></comment><comment><USER4> I have that need and I do work offline, but I just use an extra cheap device like a Windows tablet. It's useless for interactive work, but works fine as a node server. That reminds me, it runs Win 10, so I might try deploying Win 10 Ubuntu on it.

I don't think this device is needed. I can just as easily use a Chromebook, which can run a full Linux development environment, and not tie up my iPad as an extra screen.

There are products in the market to dump SD card onto a storage device with one button, although you could just use a GPIO pin and add a switch to your Pi to accomplish that.

</comment><comment><USER5> I saw you did a Kickstarter so you may have this info already... anyway.

I'd check out crowd supply for a maybe more "on target" audience and also the beaglebone, open and perhaps easier to tweak.

If the target is travelers, raid/camera sd seems a pretty good idea. Battery seems just a logistical nightmare to handle, I'd make it work with one of the various phone external batteries (assuming powerful enough).

</comment><comment><USER6> What price point are you targeting?

I had a similar need and scrapped the dedicated server and went with a Lenovo P1 Gen 2. It even supports RAID 1 with two m.2 NVMe ports. Since I needed a laptop anyway, it was one less device to carry around.

Also, it should probably be packaged in a consumer friendly looking case otherwise it may be scrutinized by transportation and border security.

</comment><comment><USER7> I probably would not buy it. Without the internet, I can't work at all. With the internet I don't see the device's value compared to a vps.</comment>