About 40% of economics experiments fail replication survey (2016) - <AUTHOR> https://www.sciencemag.org/news/2016/03/about-40-economics-experiments-fail-replication-survey <comment><USER2> I am still hoping that some day economy will find it's place where it belongs - next to astrology, numerology and alchemy.

This is with tongue in cheek but as a mathematician (financial math) I find economic equations and theorems laughable and it's scientific method just a thin veil over ideology.

<comment><USER3> This is a problem math majors have with pretty much every other science out there. You can rank them if you like, and there are parts that are better and worse (in economics you have game theory, which I'm sure you're not going to find too ideological, and you have experimental economics ... which is little better than social sciences).

[https://xkcd.com/435/](https://xkcd.com/435/)

<comment><USER4> My experience of economics teaching is something like this:

\- Here is a set of assumptions which are obviously wrong

\- Given that set of assumptions, we can make this model, which has been shown not to hold true in reality due to the above

\- Repeat ad nauseum

<comment><USER3> True, but consider utilitarianism. Have you ever tried modeling the economy using a more reasonable set of assumptions ?

Not so easy.

But yeah I get it. Obviously the basic economic assumptions ignore:

1) government in general, but especially tax law. It's WAY too complex to model, unfortunately (and I doubt that's a coincidence), nor is it even constant.

2) it ignores that the vast majority of markets are supply- or demand- constricted. In reality demand graphs flatten off at some point. Let's take bread. There is only demand for so much bread, and lowering the prices past a point no longer increases demand at all. So you can see it exists.

Supply bound is similar. We are just not going to produce more land than there is. That market is absolutely supply bound.

The weird thing economics glosses over is that nearly every market is either supply constricted or demand constricted, and the common equations just don't work there.

3) information. Economics assumes perfect information, when that obviously doesn't exist. Information spreads though, so over very long time frames perhaps there's a case to be made that perfect information does exist as long as the information is old enough.

The thing is, whilst I might agree that the first one is at least theoretically solvable, it's just too much work. The second and third are impossible to model. And I bet you could come up with 10 more.

<comment><USER5> Your general point that economics models greatly simplify the real economy is a good one. However, the field has made significant advances to introduce real-world constraints into the models.

Example of a subfield addressing your 3): [https://en.m.wikipedia.org/wiki/Information_economics](https://en.m.wikipedia.org/wiki/Information_economics)

I believe 2) is addressed as well but I am not a professional economist so maybe someone can help edify us.

<comment><USER3> Even if there are a few game theoretic games in advanced papers that have limited information it would be a rather large stretch to say that economics incorporates limited information at this point in time. Maybe it's coming, I don't know ... It's not going to be soon.

A similar problem exists for 2. Yes I can find a paper or two, or probably even more that talk about it, but they don't exactly have a wide following because it just makes things too hard.

Incorporating both ? Can't even find a paper on it.

</comment></comment></comment></comment></comment></comment><comment><USER6> This seems to be on par with psychology and medicine.

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

<comment><USER7> I'm not sure it's a crisis. Nobody who understands research expects every study to replicate, so what is a reasonable standard? 40% having weaker effects isn't a surprise to me, a complete amateur, for whatever that's worth. The point of research is to push the into novel territories of knowledge; like new tech at startups, that's necessarily going to include many failures.

If it's a critique of the scientific method(s), I'm all for very serious work on improving it. But I think the question is, how? Does someone know something that works better that they are holding back from us? Has any method in the history of humanity produced better results (or made more sense)? Should all science stop until it's perfect? What should we do going forward?

EDIT: I meant to add: Maybe social sciences are just really hard. They are a bit less deterministic than many aspects of physics, for example, where gravity is so predictable that a small perturbation thousands of light years away can tell us what's happening there.

<comment><USER8> >Nobody who understands research expects every study to replicate

I guess I don't understand research then, because it seems reasonable to me to expect most studies to replicate. Why not?

<comment><USER9> Well, for one, because the standard for publication in many fields is "there's a less-than-5% chance that we observed these effects because of coincidence".

Combine that with people not publishing negative-results studies, and all it takes is someone doing 20 studies (or worse, 20 analyses on the same data set) in order to find that 1-in-20 chance occurring...by chance.

Of course, this has little to do with research itself and much more to do with the standards researchers hold each other to.

<comment><USER10> While you're right about the 5%-or-less chance, it's still a 5% chance we're aiming for. If we end up with 40% over a large number of papers, something went wrong.

Not publishing the negative results shouldn't affect this number. They're not included in the 5% chance in the first place.

<comment><USER11> This is a common misunderstanding of p-values.

There is a 5% chance of observing the effect, if the effect is not there.

I think the difference is best illustrated by an example:

If you have 20 researchers investigating a hypothesis that turns out to be false 1 of them will report evidence for a false hypothesis, which will likely not replicate. Thus, if for every true hypotheses investigated, 20 false hypotheses are investigated, and the 19 researchers with false hypotheses do not report their result, that means that 1/2 of the reported positive results will not replicate.

</comment></comment></comment></comment></comment></comment><comment><USER12> So, their take is that 60% replication is good news. Yikes.

<comment><USER13> With the current Publish or Perish zeitgeist in science this number can be seen as high.

Also, even if assuming legitimate significant results, it's hard to control for every possible confounding variable: Maybe part of the effect is due to some sociological parameters of of the test group, maybe it's the heat/cold, maybe it only happens on Tuesdays. Even the same stimulus can change its meaning over time (like the Williams video). Humans make for finicky test subjects.

IMO a single scientific paper shouldn't be considered much more than a small indicator that an effect might exist and it will require further work. I think popular media does Science a disservice by ignoring this and headlining single papers as "fact".

So given that, 60% is not that bad...

<comment><USER12> True, but also not that good. All of the heat/cold/only on Tuesdays stuff should have been baked into the original experiment, really. Not that they should be able to take into account everything, but 60% replication does not indicate a very high standard. I mean it's not much better than if you just took and educated guess, with no data, since you could probably do better than 50/50\. The whole point of the study is that it is supposed to be better than an educated guess.

</comment></comment></comment><comment><USER14> Isn't that how you know something is based in science? commonality of people given the procedures to replicate, they come out with the same results consistently? so then this would mean non-scientific results. I guess they're not scientifically sound studies.

</comment><comment><USER15> This is a well-known problem.

 _Hypotheses must be continually verified anew by experience. In an experiment they can generally be subjected to a particular method of examination. Various hypotheses are linked together into a system, and everything is deduced that must logically follow from them. Then experiments are performed again and again to verify the hypotheses in question. One tests whether new experience conforms to the expectations required by the hypotheses. Two assumptions are necessary for these methods of verification: the possibility of controlling the conditions of the experiment, and the existence of experimentally discoverable constant relations whose magnitudes admit of numerical determination. If we wish to call a proposition of empirical science true (with whatever degree of certainty or probability an empirically derived proposition can have) when a change of the relevant conditions in all observed cases leads to the results we have been led to expect, then we may say that we possess the means of testing the truth of such propositions._

 _With regard to historical experience, however, we find ourselves in an entirely different situation. Here we lack the possibility not only of performing a controlled experiment in order to observe the individual determinants of a change, but also of discovering numerical constants. We can observe and experience historical change only as the result of the combined action of a countless number of individual causes that we are unable to distinguish according to their magnitudes. We never find fixed relationships that are open to numerical calculation. The long cherished assumption that a proportional relationship, which could be expressed in an equation, exists between prices and the quantity of money has proved fallacious; and as a result the doctrine that knowledge of human action can be formulated in quantitative terms has lost its only support._

See _Epistemological Problems of Economics_ by Ludwig von Mises. [https://mises.org/library/epistemological-problems- economics](https://mises.org/library/epistemological-problems-economics)

Looking backward to past events involving conscious, acting people is history, not economics. Because human beings are not falling stones, the methods of physics are a poor fit.

</comment><comment><USER16> The study's abstract ( [http://science.sciencemag.org/content/351/6280/1433](http://science.sciencemag.org/content/351/6280/1433) ) says _We found a significant effect in the same direction as in the original study for 11 replications (61%); on average, the replicated effect size is 66% of the original._

On average, the replicated effect size is only 66% of the original effect size. What explains this?

<comment><USER17> Assume you measure an effect and get two values, the estimated effect size in standard deviations and a p-value representing the probability that, if the effect size were zero in reality, you would have estimated an effect size at least as large as the one you did get.

In phase two, assume you publish a paper if the p-value is less than 0.05, regardless of the effect size. If p >= 0.05, you don't publish anything.

We are now done with the assumptions.

p-values get smaller as the effect size increases, and they get smaller as the sample size increases. There is a concept called statistical power which measures the smallest effect size it is possible for a study to detect at a given p-value, given the (fixed) sample size that that study has to work with. Larger sample sizes mean more statistical power and mean that it's possible to estimate a smaller effect size for the same p-value.

Adding this all up, we can see that:

\- if the true effect size is small;

\- AND if the sample size is "small", defined relative to the true effect size;

\- AND if we filter studies by whether they meet a p-value threshold ("reach statistical significance");

\- THEN the only studies that can be published will find effect sizes that are too large. They do not have the power to detect the true effect size; the only possible results are "no effect" and "unrealistically large effect".

The quick summary is that a reduced effect size on replication is a strong indicator that the original finding was spurious. As replications continue they will trend toward the higher of the true effect size or the floor set by the available statistical power.

<comment><USER18> There's a simpler mathematical explanation. It's called Regression Towards the Mean:

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

<comment><USER17> That is not actually an explanation; you can only apply regression to the mean if you know what the mean is. The explanation I give correctly predicts that replicated experiments will see their effect sizes decline. Saying "regression to the mean" does not.

(It is quite possible to interpret this as regression driven by the p-value threshold, but if you do that, you're relying on the explanation I gave.)

<comment><USER18> That's not true. If I take the top 5 students based on performance in a test, and put them in a group. They will likely do worse the second time around. No need to know the mean.

</comment></comment></comment></comment></comment><comment><USER19> It's better than nothing though, but it's probably wise to only used reproduced science to back up arguments based on science.

</comment><comment><USER20> The article is dated Mar. 3, 2016. It could be informative to add a (2016) to the title.

<comment><USER21> Sure. Done.

</comment></comment><comment><USER22> In machine learning's POV, this means the models these researchers proposed underfit the real-world.</comment>


SCALE 12x – Southern California Linux Expo - <AUTHOR> https://www.socallinuxexpo.org/scale12x

<comment><AUTHOR> Just heard about this recently, bummed I've missed the past few years. We don't get many interesting tech conferences in Southern California, so I'm excited to attend. Prices are _very_ reasonable too.

<comment><USER2> Yeah, I'll attend too, since there is few tech meeting in SoCal. Hope I can learn some interested things and meet some programmer here :)</comment></comment>


Prime Now drivers sue Amazon, say they were cheated on wages and breaks - <AUTHOR> http://arstechnica.com/tech-policy/2015/10/prime-now-drivers-sue-amazon-say-they-were-cheated-on-wages-and-breaks/ <comment><USER2> This is how Amazon rolls, screw the workers to please the customers, and fatten the wallets for Her Jeff.</comment>


National IPv6 launch day in Finland - <AUTHOR> https://www.viestintavirasto.fi/en/ipv6now/index.html

<comment><USER2> It bothers me that AWS doesn't have usable IPv6 support (not in VPCs, unavailable for EC2 instances, not S3, missing from Route53, etc).

I think there is a bunch of progressive companies running on AWS that would like to offer IPv6, but cannot.

<comment><USER3> Apparently Apple announced that once iOS 9 is released, all apps will be required to support ipv6. Given the large number of apps that use AWS as a backend, how will this be feasible?

<comment><USER4> NAT64 or other transition technologies.

As long as you use DNS instead of hardcoding IPv4 addresses (and if you are using AWS's ELB, you are using DNS instead of hardcoded IPv4 addresses), a mobile phone in an IPv6-only network will connect to your backend as if it had a IPv6 address, with the mobile network doing all the translation.

That's probably why Apple is adding the requirement: no matter whether your backend is on IPv4 or IPv6, your client _must_ be able to connect to it as if it were on IPv6. Due to IPv4 exhaustion and the costs of CGN, the more phones can use exclusively IPv6 (even if through NAT64 or 464XLAT), the better for the network operators.

<comment><USER5> Using hardcoded IP addresses in your code is a bad idea anyways.

<comment><USER5> Any of the down voters, do you care to share why you are down voting? This is the official development guide of Amazon as well.

</comment></comment></comment></comment></comment><comment><USER6> Last time I asked a technical(!) sales person at TeliaSonera about IPv6 availability they asked "Did you mean IPTV?".

That pretty much sums it up and they are notably not ready for the "launch", but the launch page implies it's a staged roll out to ensure network stability. I read that as "we couldn't be bothered to get things done in time like the other ISPs". Notice how e.g. DNA just flipped a switch and went _bang_.

<comment><USER7> > technical(!)

Anyone remotely technical knows about IPv6. If that's what you get when you ask for tech support, ask if they have real technicians whom you could talk to.

<comment><USER6> yes, that person transferred me and then one or two more transfers later I had some actual tech person who went "oh yeah, we do IPv6, I think, it's a business feature. How you get it, I have no clue." It took another two months of probing and poking and unanswered call requests to B2B sales, to find out that in theory I could get a business connection, but it would cost me 10x as much with the only benefit being native IPv6. (It would be still over a crappy VDSL2 line at identical parameters).

</comment></comment></comment><comment><USER8> I think we should pick a day, not too far out, and we all should immediately switch to IPv6 and the metric system world wide. Just rip off the band-aids and move forward.

<comment><USER9> The metric system has already been adopted worldwide.

<comment><USER10> The metric system is a "worse is better" approach. Why is Kg, a base unit, even if it has prefix?

Time in the SI is based on seconds, that relate very odd to the duration of a day.

The same horrible base60 system is used for angles.

Don't use SI. Use a system that fits for your Problem (e.g. the cgs system) Use Units that make sense (like Angstroms or barns) for the problem you are solving. Often SI fits. But SI shouldn't be a dogma.

<comment><USER11> Don't go fooling yourself into thinking all systems are equally complex just because all systems have sone complexities.

I've read a at least half a dozen studies linking the US standards system to worse learning outcomes. Nobody's saying SI is perfect. It's just a lot, lot less worse.

<comment><USER10> Of course the US or the Imperial System are a way worse, I never meant to imply otherwise.

But SI is not particular good and it's not a non-brainer to choose SI. Units should be used because they are elegant to use. Like Angstrom and not because they are in the SI system.

And there are other Systems that are just as valid. Instead of SI-Prefixes one could use Japanese numbers. (They have names for the numbers 10^n for n from -24 to 68 in steps of 4.)

</comment></comment></comment></comment></comment><comment><USER12> I use the DNS flusher addon in Firefox, and with the Status-4-evar toolbar addon, I can see the IP address of the sites I visit. My provider (not in Finland) offers IPv6 support, and I see IPv6 addresses quite often, especially for Google, Facebook and other big sites.

This addon makes IPv6 real for me. I know my provider uses IPv6, but actually seeing this address makes a difference to me. Most people don't know and don't care, and they shouldn't as normal user, but for me it's different.

</comment><comment><USER13> I like the idea that if you participate you have to leave ipv6 turned on after. These one off days before have just ended and most people turned it off.

Github please add ipv6 support...

<comment><USER14> And HN too:

        $ host news.ycombinator.com
        news.ycombinator.com is an alias for news.ycombinator.com.cdn.cloudflare.net.
        news.ycombinator.com.cdn.cloudflare.net has address 22.214.171.124
        news.ycombinator.com.cdn.cloudflare.net has address 184.108.40.206

<comment><USER13> Yes thats odd as you can just turn on ipv6 support with cloudflare.

<comment><USER15> The only holdback nowadays is typically your application code not being ready to deal with IPv6. It is possible that HN doesn't yet handle features such as no procrastination for IPv6 addresses.

<comment><USER13> Cloudflare even have a "pseudo IPv4" option for dumb software [https://support.cloudflare.com/hc/en- us/articles/202494830-P...](https://support.cloudflare.com/hc/en- us/articles/202494830-Pseudo-IPv4-Supporting-IPv6-addresses-in-legacy- IPv4-applications)

</comment></comment></comment></comment></comment><comment><USER16> I some what skeptical about all those IPv6 launch days. Residential IPSs across the world really do not care. Meanwhile in Canada for example Rogers gives 3G/LTE users IPs from the 184.108.40.206/8 (UK Ministry of Defence) and then NAT them to the pool of the real IPv4 IPs. No IPv6 as you may guess.

<comment><USER17> As far as I can tell, T-Mobile in the US provisions handsets with IPv6 by default.

<comment><USER18> I just got an iPhone 6 Plus from T-Mobile a couple days ago, and I don't seem to be getting an IPv6 address over LTE. Maybe they aren't doing it everywhere yet?

I'm in Western Washington, in the Puget Sound area on the other side of the water from Seattle.

<comment><USER19> On Android, you can just go to "Settings" -> "Cellular networks" -> "Access point names" and choose whether you want to request an IPv4 or IPv6 address.

As far as I can tell (from looking at [https://support.apple.com/en- us/HT201699](https://support.apple.com/en-us/HT201699)), iOS doesn't have an equivalent option, so it probably just doesn't support IPv6 over cellular networks yet.

</comment></comment></comment></comment><comment><USER20> That's a great idea. I hope other countries follow suit. We need this sort of arbitrary "catalyst events" to sanction migrations, even just at the psychological and political level.

<comment><USER21> What would have been better is 20-25 years ago take ipv6 out back and shoot it and tel the IETF to go back to the drawing board and come up with one tat had a better migration plan

</comment></comment><comment><USER22> Well, at least I don't yet have IPv6 working. Might be because this isn't mandatory and my ISP (largest in Finland) just doesn't care or because I'm using 4G since they can't figure out how to get a working fiber connection to me (it works for few hours and then cuts of for 30-90 minutes).

<comment><USER23> At least DNA in Helsinki delivered, this is what I started to see today:

        wlp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
                inet 82.181.xxx.xxx  netmask 255.255.248.0  broadcast 82.181.xxx.255
                inet6 2001:14ba:100:0:4a21:b369:xxxx:xxxx  prefixlen 128  scopeid 0x0<global>

[http://test-ipv6.com/](http://test-ipv6.com/) gives a score of 10/10\. It looks like they are currently serving only /128 via DHCPv6, though.

<comment><USER24> You actually get a /56 if you ask for it (dhclient -6 -P -N -v -i em1 or somesuch )

<comment><USER23> Oh, good to know! That was what NetworkManager auto-configured for me, some day I'll have to take a closer look at getting the /56 set up.

</comment></comment></comment></comment><comment><USER25> Apple has actually done a really good job of pushing IPv6. For years their devices have supported it from their routers to their laptops. Between Apple and Comcast's recent IPv6 turnup I'm actually on IPv6 by default.

<comment><USER26> IPv6 works without problems in OS X, but AirPort doesn't support IPv6 over PPPoE (I've had no luck with bridge mode either, even though it theoretically should support that).

<comment><USER27> I've used a Time Capsule just fine in bridge mode when cabled to a CPE sending out router advertisements. If you use it as a bridge, you might want to make sure the TC firewall is disabled (or at least lets multicasts through).

</comment></comment></comment><comment><USER28> Torille?</comment>


Ask HN: Has anyone updated an Android app from free to having in-app purchases? - <AUTHOR> I have a popular app and would like to enable some useful premium features using in-app purchases.
However, I believe this will require all users to accept new permissions when they update, and there isn't an option to explain what the in-app purchases apply to.
Has anyone been through this process? What was the effect on your downloads and updates?
Thanks! <comment><USER2> I have not been through the free -> IAP route but each time we have to add a new permission, updates take a hit. A large part of our users never update anyway, so when in addition a manual update is necessary, it takes time.

Since our app has a huge server-side part, from time to time we force users to update to mitigate this. That's not a solution for every app though.</comment>


An introduction to OpenGL 4.1 - <AUTHOR> http://rastergrid.com/blog/2010/08/an-introduction-to-opengl-4-1/

<comment><USER2> > ARB_ES2_compatibility

Can anyone comment on this? What's the standard procedure, do I just write regular ES2 code and it's somehow automatically GL 4.1? Or what would I have to do? (OpenGL noob here)</comment>


Show HN: Leaking personal data in your browser - <AUTHOR> https://medium.com/@stabbles/why-you-should-disable-autofill-bf2e15c65b5c#.nv4mqy5xz <comment><USER2> Luckily I think that people seldom enters their email address on shady websites... I never liked autocomplete in chrome, it always seemed exploitable to me...</comment>


Ask HN: JS-heavy apps revealing business logic on frontend? - <AUTHOR>

I'd like a better informed opinion on this, but with the torrent of JS-heavy frontend web apps these days, isn't there a risk of revealing some potentially compromising security flaws if someone simply opens up the downloaded .js file and studies it carefully?
Wouldn't it make more sense to tuck away all the meat of the app in the backend and only use frontend JS for UX/UI updates? <comment><USER2> The same rules still apply no matter how much code is in the front end: Never trust the client.

<comment><USER3> Indeed, for callbacks and such I find it good to just think of the web browser as just another web service client calling an API: that's where you draw your line of trust (your own code running in your own environment).

<comment><AUTHOR> That's actually a great way to begin building a system: consider the browser as another API client. It's sort of the Twitter way, I guess.</comment></comment></comment>


How can a high school student learn to code? - <AUTHOR>

I'm a rising high school senior. I've studied some Python before on my own, but I want to take my skills to the next level. What should I do to practice? Any advice for an aspiring programmer? <comment><USER2> Same thing you'd do if you were just out of college and you wanted to learn programming. Or if you were 41 years old and wanted to learn programming. Or if you were 13 with your first computer.

Build something.

Scrape together seven dollars and register a domain name, then sign up for AWS' Free Tier and figure out how to get a simple website up and running on an EC2 instance. At that point, you're officially just as capable of building a software product as anybody here.

Figure out what you want to build (starting with a small idea would make things go a lot smoother), then learn the things you need to build it. Django would seem a logical choice since you already know Python. But Ruby is pretty much the same language, so you won't have any more trouble getting up to speed in Rails. It doesn't really matter, since the real skill you're learning is "building things".

While you're at it, you should probably Derek Sivers' "No Speed Limit" piece ([http://sivers.org/kimo](http://sivers.org/kimo)) to make sure you realize that there's no requirement to crawl along at the same pace as the terrible comp-sci classes you'll have available over the next half dozen years. If you're determined, you might find you're really really good at this stuff by the time you graduate high school.

Good luck!

</comment><comment><USER3> I kinda think that everyone learns differently to some extent, and that there isn't one universal "best way". So what worked for me, or anybody else, might not be right for you... so take this with a grain of salt.

My preference is to just pick a project and start hacking, and force yourself to learn what you need to know to complete the next step of the project. I think it works better if you are actually enthusiastic about the project, but just picking something "at large" to have a focal point is fine.

It doesn't have to be something big and elaborate, especially in the beginning. You don't need to say "I'm going to write a Facebook clone" right away. Start small, but grow it as you learn.

Maybe you just want a program to randomly generate D&D characters or something. Fine. Write that as a command line program. Then come back and slap a UI on it using wxPython.

Later, port it to being web based using Pylons/Pyramid, Turbogears or whatever. Once you have a web based version, add login/logout, multi-user capability, user profiles, an activity stream, a REST API for external users, XMPP notifications, etc., etc., etc.

Then build an Android app version that uses the REST API.

Anyway, you get the picture. Just starting building and "jump in over your head" and force yourself to learn as you go. Go to the reference material, Google, Stack Overflow, mailing lists, whatever, if and when you get stuck, then build some more. Lather, rinse, repeat.

That's more or less how I've learned most of what I know about programming, other than a few times when I just decided "I want to learn X" and picked up a book on it and ran through the example code and read the book... but inevitable I get to a point where I need to actually take that and try to turn it into _something_ tangible.

Like I said, this approach may or may not work for you, but maybe give it a shot and see how it goes.

</comment><comment><USER4> Hey gschiller!

I'd suggest learning a little software engineering, it'll be invaluable to you later on. Organizing the way you develop your code is pretty damn essential to tackling real-world projects.

If you're already building simple tools and apps there are a couple of things you should really master.

      * Version Control [1][2]
      * Packaging python eggs [3]
      * Command line parsing [4]
      * Configuration [5]
      * Documentation generation [6]
      * Unit Testing [7]

If you can get comfortable with the above concepts and tools before you're deep into school, you're going to be head and shoulders above most of your peers.

First, setup a github account if you don't already have one. Make sure you're committing your code, keep a history of small, succint changes. Learn branching and merging!

As the others have suggested, pick up a project! Whatever you want to build (this keeps it interesting) and integrate in the above tools. Set it up as a package, give it cli options, have it load a default config file if it exists, or use sane defaults. Document your functions; you'll be spending a majority of your time reading code, so make it useful for others.

Most importantly, get yourself some unit tests. Build your application one function at a time. Test it with nose. After it's doing what you want, commit the changes in git, push to your github branch, and onto the next one.

If you're having issues with python in particular, pickup an irc client and join #python on freenode. The community there is pretty excellent and if you're at a difficult point, it's likely someone can point you in the right direction.

Lastly put together a blog. While you're going through all of this, document what you're doing. Put together a couple things you learned when you tackle a difficult problem. Write about what things you had the most trouble with. This will pay back for you two fold; you'll reflect on the material which will help your understanding, and you'll also be setting yourself up for success when you're ready to either start your first internships or jobs.

[1] [http://git-scm.com](http://git-scm.com)

[2] [https://github.com](https://github.com)

[3] [http://www.pip-installer.org/en/latest](http://www.pip- installer.org/en/latest)

[4] [https://github.com/docopt/docopt](https://github.com/docopt/docopt)

[5] [http://docs.python.org/dev/library/configparser.html](http://docs.python.org/dev/library/configparser.html)

[6] [http://sphinx-doc.org](http://sphinx-doc.org)

[7] [https://nose.readthedocs.org/en/latest](https://nose.readthedocs.org/en/latest)

</comment><comment><USER5> I think it depends on what you want to learn. If you wanted to learn Ruby on Rails, then I would highly recommend the Ruby on Rails Tutorial [1]. It is about 15 hours of hands on videos and labs, which will help you create a working application. You can also check out RailsCasts [2], which has many hands on videos. Or get a subscription to Safari Books Online [3], where you can get digital copies of the latest technical books on many many topics. You can use these to teach yourself pretty much anything technical. I cannot stress this enough. Get used to reading a book and teaching yourself the topic. Over your career you will need to be continually learning, the sooner you understand this the better!

Zed Shaw has a site called _Learn Code The Hard Way -- Books And Courses To Learn To Code_ [4] which look pretty good. I have never downloaded them, but from what I've read they are hands on labs which teach you Python, Ruby, C, SQL, and Regex. Worth checking out.

I would also highly recommend learning Linux and/or Mac. Just download virtualbox and play around with linux (ubuntu is pretty friendly). Most programming jobs will be simplified if you at least understand Linux and you know how to get around the command line via ssh.

[1] [http://ruby.railstutorial.org/](http://ruby.railstutorial.org/)

[2] [http://railscasts.com/](http://railscasts.com/)

[3] [http://my.safaribooksonline.com/](http://my.safaribooksonline.com/)

[4] [http://learncodethehardway.org/](http://learncodethehardway.org/)

</comment><comment><USER6> I have been programming for about a year and a half. I am now in college and am developing a web application for my start up. I think "getting to the next level" is often a big problem for those teaching themselves programming. There seems to be a plethora of resources available to beginners, but not as many "intermediate" lessons.

My suggestion is to pick a category - whether it is games, web development, mobile, etc - and start a project there. As others have said, dive in over your head. Take it one step at a time, it will be slow at first. No matter what you are doing, utilize search engines and Stack Overflow. They are your best friends. Don't worry if you use a framework and feel completely overwhelmed at first - it's normal. Also, learn Linux. It will make your life easier, and give you a better understanding of how operating systems work.

Lastly – just some general advice about something I have learned. You will hit some rough patches where you spends hours or even days on something trivial. This is part of the learning process. Becoming a better programmer means you organize your projects differently, and you learn how to debug more efficiently. Something cool about this though – sometimes you have an error and try 10 different fixes. None of them work. This is not wasted time – you just learned 10 new things, and chances are next time you will be able to debug a little bit more quickly.

</comment><comment><USER7> > What should I do to practice [programming]?

Write programs.

> Any advice for an aspiring programmer?

Debugging programs is a big part of how you learn. Don't be afraid to put print statements in your program to see what the values of variables are at various points in time. Don't be discouraged when something doesn't work -- any good programmer has spent hours or even days finding and fixing a bug that's turned out to be trivial.

Don't be afraid to throw out a project and start over. Your second attempt is often much better than the first.

Learn version control. Git is the de facto standard, and if you master it, it will improve your productivity greatly as your projects get larger.

If possible, find someone online or in real life who's also interested in programming, you can bounce ideas off each other and work together on projects. It's sometimes easier to get and stay enthusiastic about a project if someone else is relying on you to make progress on it.

</comment><comment><USER8> Hey! I'm a high school student myself. I'd love it if you could shoot me an email at zchlatta (at) gmail.com. It's always nice to meet others who share my interests.

It really depends on your current skill level. I'd recommend setting a goal for yourself to reach. Say you're interested in game development. You could set the goal of learning pygame[0] before the next Ludum Dare[1]. If you're not comfortable with Python itself, you may want to check out Learn Python The Hard Way[2].

[0] pygame - [http://www.pygame.org/news.html](http://www.pygame.org/news.html) [1] Ludum Dare - [http://www.ludumdare.com/compo/](http://www.ludumdare.com/compo/) [2] Learn Python The Hard Way - [http://learnpythonthehardway.org/](http://learnpythonthehardway.org/)

</comment><comment><USER9> All great advice here. I would toss in that you should make sure that your topic is fun, and interests you. (There's plenty of time for boring work later in life!) If you like games, create a game. If you like Math, visit projecteuler.net.

If you are interested in potentially majoring in Computer Science in college, take Udacity, or look up Harvard's CS50 for an idea of what you'll be getting yourself into. It's tough to major in CS without having some comfort with programming and (more important!) patience with debugging when you arrive on campus.

</comment><comment><USER10> Scour code that you find interesting and write a piece of software.

The best advice I was ever given was to think small and in terms of "pieces" or "parts" of a program as a whole. Write something that doesn't do anything, well...for lack of a better term..."useful".

Don't think too grand when you're just getting started, though. That's not to say don't dive right in, but take it simply at first. A few lines at a time.

</comment><comment><USER11> If you are into audio stuff you can do what I did and learn Javascript within the context of building little sound generators and audio file sample trigger players. I now understand a good amount of DOM manipulation,CSS,semantic HTML and Javascript patterns as a result.

</comment><comment><USER12> Create.

It takes knowledge to build correctly. By creating you will end up pushing yourself into a cycle of learning and production.

Your willpower will fuel your creation; harness it.

Never be ashamed to ask, be ashamed for not having the courage.

</comment><comment><USER13> Definitely check out Codecademy, read the Learn Code the Hard Way series for languages you want to learn, try and make some tiny utilities for things you need (example: python Twitter client from the command line), etc.

</comment><comment><USER14> Yes, create is the most important part. I learned most of what I know taking online courses from Stanford or Coursera or lynda.com</comment>


Singapore launches preventative corona contact tracing app - <AUTHOR> https://www.smartnation.sg/whats-new/press-releases/launch-of-new-app-for-contact-tracing <comment><AUTHOR> This claims to use bluetooth proximity sensing of other people with the app, in order to be able to trace corona viruts bearers more quickly.

Interesting to contrast to the US approach of "give us blanket gps and cell tower info".</comment>


WordPress 4.3, "Billie", released - <AUTHOR> https://poststatus.com/wordpress-4-3-billie-released/

<comment><USER2> Very nice new features especially the menu customization and preview. Some of my current clients will be very happy that they can finally see what the menu looks like without flying blind. Hopefully this also works with content blocks in menus as well.

</comment><comment><USER3> The perfect thing of Wordpress is that it really helps to upgrade from (very) older version to the new one.

Yah, some months ago I upgraded a wordpress 2.3.3 (released in 2008, [http://codex.wordpress.org/Version_2.3.3](http://codex.wordpress.org/Version_2.3.3)) to version 4.1 :) I only needed to fix some minor problems!

I will wait 5 years from now to see if I can move from this 4.1 to another one. Sorry Wordpress 4.3 ;)

<comment><USER4> Actually since 4.something you can enable "auto-updates", and it will keep itself up to date.

I wouldn't suggest keeping in client machine on an older release, much less on a 2,3,4 or 5 year old release as you suggest, and leaving it in 2.3.3 until now is downright criminal with all the security fixes that have come out since then.

<comment><USER3> Wordpress ecosystem has many security issues. So upgrading doesn't mean it's secure. So I run my wordpress on laptop, compile all things to static contents thanks to httrack , and publish those static contents. No more nightmare, and the speed is amazing.

Of course, there is no more comments and dynamic contents. But I don't care ;)

</comment></comment></comment><comment><USER5> WordPress 4.3 named after Billie Holiday. Billie was an American jazz singer and songwriter. If we look at her life, it was a real struggle since her childhood. Attempted rape, protective custody, mother left, met again and became a prostitute. Arrested, sent to prison, served the due period and then started singing at night clubs. Her life was a chaos but she rose above the dirt and made her name in the Jazz singing.

WordPress 4.3 generated a lot of buzz since it was released. The most intriguing thing that I personally like was that Konstantin Obenland committed a release date for WordPress 4.3 and it was delivered on time.

Read more reactions from a blog post that we compiled at Cloudways blog.

[http://www.cloudways.com/blog/wordpress-4-3-community- review...](http://www.cloudways.com/blog/wordpress-4-3-community-reviews/)

</comment><comment><USER6> I've only once had to keep a WP site up and running, and although the code has a ton of smell, most of my work there consisted of only a few clicks. I'm surprised at how effective Wordpress is as a platform, even if it's slow, and hope that they make a major version move to cleanup some of the cruft in their codebase soon. Dropping PHP4 constructors is a small step in the right direction, forcing plugin developers to do the same would be another. Kudos Wordpress, and thanks for the overview to the author (I'd never have bothered to read it otherwise)

</comment><comment><USER7> So many people seem to dislike Wordpress but what alternatives are their if you want to host your own blog?

<comment><USER8> There are tons. Ghost, Moveable Type, Textpattern, Octopress, Statamic, Craft, PencilBlue, Dropplets, Anchor, Kirby, Expression Engine, Drupal, Lifetype, PivotX, Nibbleblog, Joomla, b2evolution, Publify, Jekyll, BlogEngine.net, Mezzanine... plenty more.

</comment></comment><comment><USER9> Blogspam.

Here's the official announcement: [https://wordpress.org/news/2015/08/billie/](https://wordpress.org/news/2015/08/billie/)

<comment><AUTHOR> I wrote about a lot of developer facing features and linked to source materials to help folks get more information that are not blogspam at all. I appreciate your feedback on my work though, really; you're such a nice guy.

<comment><USER10> I think the parent is referring to the fact that some browsers warn about your blog including unsafe scripts (try to load your link in Chrome or Firefox for e.g.). While this is concerning, I wouldn't go as far as qualifying the article as blogspam though.

<comment><AUTHOR> Fwiw the mixed content warning is from VideoPress, which is also used in the WordPress.org announcement and also throws the same error. That said, I reported it to the right people and it's likely getting fixed across the board. So while I highly doubt that's what the commenter was referring to, your followup made the web just a bit better, so thanks!</comment></comment></comment></comment>


Watch Your Hack – a manual to protect you against hackers - <AUTHOR> https://watchyourhack.com/ <comment><USER2> Not updating software is not the most common cause of a hack. Phishing is and it should be #1.

None of the listed solutions are useful if you open a malicious document and it installs a RAT or banking trojan,even password managers and 2fa are useless if the attacker controls the browsers javascript via dll injection.

Email,social media and drive-by phishing are the most realistic threats for average users. Updates should be automatic and 2fa mandatory,this is because practicing good security hygeine requires one to understand how specific threats might otherwise affect them(which is difficult to communicate to a non-technical audience),without knowing that,it all gets too old/inconvenient fast.

That being said,kudos on educating users :)</comment>


Reddit PAC aims to kick SOPA's daddy Lamar Smith out of Congress - <AUTHOR> http://boingboing.net/2012/03/08/reddit-pac-aims-to-kick-sopa.html

<comment><USER2> Bravo. This is action I support (and can support with $$).

Lamar Smith is almost completely corrupt - almost all the bad bills are co- sponsored by this clown. There are Dems as bad as this guy, but Congressman Smith seems far more effective in his corruptive capacity than any other congressman on the hill.

<comment><USER3> If you were serious about the donating money part, the best way to do this now (if they havn't already met the goal) is to donate to a billboard sign saying Lamar Smith is Killing the internet, with a big picture of a noose with a hashtag: "#unseatlamar":

Proposed picture of billboard: [http://testpacpleaseignore.org/dollar-by- dollar-we-can-make-...](http://testpacpleaseignore.org/dollar-by-dollar-we- can-make-a-difference/)

Donation status: [https://secure.piryx.com/donate/EKph3wRp/Test-PAC-Please- Ign...](https://secure.piryx.com/donate/EKph3wRp/Test-PAC-Please-Ignore/lamar- smith)

<comment><USER4> It doesn't seem like having a picture of a noose in an ad attacking a politician is a good idea.

<comment><USER5> It is what humans have done for generations. Heck some parts of the world still do it. At least we use metaphorical ones. This guy is a crook and deserves the opportunity to make a lot of money doing something else.

</comment></comment></comment></comment><comment><USER6> > the Protecting Children from Internet Pornographers Act of 2011 (AKA "the > Spy on Everyone Always Act")

Add Cory Doctorow to the list of authors who write about legislation they haven't read. What it actually requires is the keeping of IP address assignment records and the mapping of them to custormer records. A few sites have claimed it requires keeping a log of all sites actually browsed and data downloaded and such, but that's completely made up. It's disappointing that Doctorow apparently gets his information from such sites and doesn't verify it.

The relevant parts of the legislation are only a couple of paragraphs. Why do bloggers find it so damned hard to read it for themselves instead of just repeating what other bloggers write?

<comment><USER7> And this is bad enough. There are plenty of services that could make anonymity and privacy as part of their offer, and laws such as this make it a moot point.

Worse, it touches defaults. By default, most sites don't keep IP addresses (no point really, for most businesses). Changing this opens so many possibilities for law enforcement, and they are all the kind I'd expect the chinese government to be happy about.

<comment><USER8> The ISPs can, and in the UK there is one of our lovely 'voluntary agreements' that has the ISP retaining information about web sites visited, but only for 4 days. Police need to move quickly, as they did in the riots last summer.

[http://en.wikipedia.org/wiki/Telecommunications_data_retenti...](http://en.wikipedia.org/wiki/Telecommunications_data_retention#United_Kingdom)

</comment></comment></comment><comment><USER9> I am reminded of a simile from _The Manchurian Candidate_: about as effective a rubbing a jar of vanishing cream onto the flight deck of the USS Enterprise would be in making the carrier disappear.

(Quoted from distant memory--may be the wrong carrier.)</comment>


The Most Important Algorithms - <AUTHOR> http://www.risc.jku.at/people/ckoutsch/stuff/e_algorithms.html <comment><USER3> quite a lot of structure amongst these algorithms that the list misses out:

\- dynamic programming comes from solving Bellman's equation and Q-learning is an approximate means of doing dynamic programming.

\- It's possible to do beam a* search, where beam search, a* search, and best- first (greedy) search are special cases.

\- in the continuous domain, greedy search is essentially gradient ascent.

\- you can use discrete differentiation to find the gradients for gradient ascent (actually, i would replace the first order method suggestion of this list with newton-raphson or some quasi-newton raphson method like BFGS).

\- EM ties some bits together.

\- if you replace the max of the viterbi algorithm with a summation, then you get the sum-product algorithm which is essential in the E step of EM. if you use viterbi instead of sum-product, you get something known as zero- temperature EM, which is an approximate form of EM

\- the M step of EM is typically just gradient ascent!

\- you can use max flow to do a similar thing to viterbi on certain graphs

and so on...

<comment><USER4> I think the dynamic programming meant here is more general. They mean saving results of a recursively formulated algorithm in a table so that you don't have to recompute them. This can be used for example for finding longest common subsequences, but it is much more general.

Can you elaborate on the general search procedure?

Is there a good resource that ties algorithms together like you've done here, but less concise?

<comment><USER3> they do mean dynamic programming in a more general sense: but dynamic programming was invented originally to solve Bellman's equation. it turns out many other problems have a similar structure which is quite surprising! before bellman's seminal work in 1940s, it wasn't known how to efficiently these problems. indeed, you can often do something like Q-learning for finding approximate solutions to dynamic programming problems even faster.

the general search procedure is just A* search but with the beam search pruning each time you expand the fringe of exploration.

i don't know a good source, i picked this up from a bunch of courses/research.

<comment><USER4> Thanks! You should consider writing an article about this :)

</comment></comment></comment></comment><comment><USER5> This reads like a textbook, i.e. it's algorithms that are highly useful to CS professors and students but not necessarily to practitioners. If I had to pick a top-10 list based on my professional experience, it would be:

1\. Tree traversal. This comes up _all the time_ , from directory walks to DOM traversal to code analysis to folds over abstract data types. It's also something that you need to know and can't always rely on having a library function for, because many things exhibit tree-like structure without actually being instances of your language's Tree data type.

2\. Hashing. Obviously as a base for hashtables (which are often your dictionary data structure of choice), but also as a general technique for generating a small fingerprint from a large set of data.

3\. Statistics - mean/median/mode, but also things like confidence intervals, regressions, sample sizes, how to make sure your populations unbiased, etc.. You are evaluating your product, right? Knowing how to make good inferences from data is critical, particularly since there're lots of ways you can do it wrong.

4\. Sorting. This can usually be hidden behind a library function, but it's useful to understand because many other algorithms have very different (and often better) performance characteristics if the input data is kept sorted. Binary search falls into this bullet point too.

5\. Data compression algorithms. Another one that you'll rarely have to directly implement, but knowing their characteristics helps you make good speed/space tradeoffs for the rest of the system.

6\. Bloom filters. This is one that I never learned in school but tends to be incredibly useful when dealing with massive data sets. Oftentimes, you want to be able to quickly _reject_ elements if they're _not_ in a set, but don't really care about it taking a while if they _are_ in a set (because you expect that many more elements will be outside of the set than inside it). A Bloom filter is one of the fastest, most space-efficient ways to do this.

7\. Topological sort. Dependency graphs come up all the time in practical programming problems, and usually you want a way to linearize them into a list of tasks that you can perform in order. It's also a shame that many languages' standard libraries don't have a topological sort function, so oftentimes you _will_ have to implement this one yourself.

8\. Support vector machines. These are your bread & butter machine-learning classifiers, and are really nice to know when you've got a bunch of data and want to try to automate some rote classification job.

9\. Physics simulations. I've found it surprising how useful my intro physics course knowledge has been. Things like vectors, position vs. velocity vs. acceleration, damped harmonic oscillators, FFTs, etc. It's most useful when building UIs and games - oftentimes, you can make a UI feel significantly more natural by adding easing functions that behave like acceleration when you ease in and frictional damping when you ease out.

10\. Unification. I'm probably biased because a lot of my hobby programming is in compilers & type systems, but unification comes up all the time in compilers, and is a really general technique for equation solving.

<comment><USER6> _Physics simulations. I've found it surprising how useful my intro physics course knowledge has been. Things like vectors, position vs. velocity vs. acceleration, damped harmonic oscillators, FFTs, etc. It's most useful when building UIs and games - oftentimes, you can make a UI feel significantly more natural by adding easing functions that behave like acceleration when you ease in and frictional damping when you ease out._

Any good physics book that I could look into? Preferably books that integrate physics with programming?

<comment><USER5> I believe my course used Halliday, Resnick, and Walker, but at the intro level, basically anything should do.

I wasn't even really thinking about the integration with programming - <USER2> parts I've used have mostly been just knowing what the basic equations were, along with representations like vectors and such. If you have a function of t, then all you need to do to simulate it is advance t by some infinitesimal amount (based on the frame rate, usually) and then compute your new positions. I guess that when you get to more complex simulations, then things like fast matrix multiplication and symbolic differentiation may be useful, but I've never actually used them in my own programming.

</comment></comment></comment><comment><USER7> A* is not just that. The way it is said seems to imply that it is equal to Best First Search. Best First Search only relies on the heuristic function, so for the following graph, where A is the start node and h is the heuristic function:

+---A---+

|...........|

B h:1....E h:4

|

C h:2

|

D h:3

The traversal order according to Best First Search would be:

{A, B, C, D, E}

While A* will search by g(x) = h(x) plus d(x), the latter being the distance function from the start note to the given node. So, assuming the distance function to be equal to the depth of the node in the tree it would traverse it this way:

{A, B, C, E, D}

g(D) = h(D) + d(D) = 3 + 3 while g(E) = h(E) + d(E) = 4 + 1 = 5, so E goes first.

</comment><comment><USER8> Thanks for posting this, I have a bunch of algorithms to learn. :)

<comment><USER9> Instead of going by a checklist, try to approach it by domain: Searching; Sorting; floating point, integer computing, and bit-manipulation; numerical analysis and computation; DSP; optimization and dynamic-programming; information theoretic stuff like compression and encryption; graph theoretic algorithms; symbolic algebra; geometric and hierarchic data structures and algorithms; statistical, probabilistic and inferential algorithms; string and sequence processing along with linguistic techniques, etc.

The whole point of big encyclopedic texts like Cormen et al. is to wet your feet and give you a broad exposure to various techniques. That way you have a small idea on what you want to use next, and you know which domain to focus your research.

My one recommendation is to ditch programming languages with huge boot-times when playing with algorithms. You want something that you can interact with live and see results; in that regard, even a symbolic algebra system like Maxima would be better than C, C++ and Java. Lisp and Python would be ideal for most algorithms.

<comment><AUTHOR> I am going through Cormen et al. with the objective of getting my feet wet but the whole process is painfully slow. I thought it would be nice to have at least some familiarity on the widely used algorithms across the globe. However, you are right on ditching programming languages with huge boot times. I am happily trying out my algorithms in Python.

<comment><USER10> CLR is an extremely well written algorithms textbook, but I use it more as a reference than for self-study. My first algorithms book was Sedgewick's Algorithms (where all algorithms were presented in Pascal), which is a very good algorithms text that is much lighter on several aspects.

Recently, however, I came across the following gem: Algorihtms + Data Structures = Programs, by Niklaus Wirth. (an Oberon version of 1994 is available for free: <http://www.oberon.ethz.ch/WirthPubl/AD.pdf>). I think this is hands down one of _the_ best algorithm books. It amazes me how much content Niklaus Wirth is able to present in concise, yet crystal clear writing. Besides the usual algorithms, he includes very interesting applications that probably no other book does: using the partitioning of QuickSort to find the median (pg. 56 in above PDF, Section 2.3.4), based on algorithm by C.A.R. Hoare, and an in-depth discussion of polyphase sort (pg. 70, Section 2.4.4), which might be interesting for heavily distributed sorting (that at least what I imagined as a possible application when I recently re- read parts of it).

<comment><AUTHOR> Thanks. BTW, here is the correct link for the book that you referred to on your comment - <http://www-old.oberon.ethz.ch/WirthPubl/AD.pdf>.

<comment><USER10> Thanks for the correction!

</comment></comment></comment></comment></comment></comment><comment><USER11> Including dynamic programming is kind of like including divide and conquer.

nice list I'd also nominate :

support vector machines, back prop neural net training, delaunay triangulation, floyd-warshall, kruskal's mst, newton's method, edit distance algorithm, huffman coding or something with compression (I'd vote zip), some kind of reduction algorithm and we can't forget simulated annealing

</comment><comment><USER12> Good list.

I would include some more pragmatic algorithms, such as Frank Liang's hyphenation algorithm (PhD thesis at Stanford in 1983) <http://www.tug.org/docs/liang/>

Also De Casteljau's algorithm for Bezier curves from 1959 and deBoor's algorithm for B-splines.

The above are the ones that I have had to implement in the past as part of my work. There is a whole bunch of other algorithms in computer graphics that are equally (or more) important, which many of us rely on but fortunately don't have to implement.

Oh, another classic, pragmatic algorithm is John Carmack's implementation of BSP-based pseudo-3D rendering for the Doom game engine in 1993. See <http://doom.wikia.com/wiki/Doom_rendering_engine>

</comment><comment><USER13> Erm... How did this list include the merge sort and heap sort, but not the quicksort?

<comment><USER14> I don't agree with that list, but I think quicksort is given way more weight than it deserves. I guess it's a desired result of whomever named it "quicksort".

It's not particularly quick, has horrible worst case guarantees (which, if you care to improve, would make it slower still and very complicated), and is easy to get wrong on many accounts (repeating elements; already sorted input; unlimited recursion depth).

heapsort is simpler than quicksort, and has the best worst-case complexity you can get. It's not stable, but then neither are most quicksorts.

quicksort has its place, but it gets a lot more attention than it deserves.

<comment><USER15> The main advantage to quicksort is that it's still the fastest average-case- in-practice of the common algorithms. If you want an _O(nlogn)_ worst-case, introsort combines quicksort, which is fast on average but _O(n^2)_ worst- case, with a fall-back to an _O(nlogn)_ heapsort, with a guarantee that it'll never take more than _O(nlogn)_ before it falls back, making it still worst- case no worse than _O(nlogn)_. It'll of course be a constant-factor slower in those fall-back cases than if you had just used heapsort or something directly, but it'll asymptotically be no worse, and on average will get you the nice quicksort win.

Link: <http://en.wikipedia.org/wiki/Introsort>

<comment><USER14> > The main advantage to quicksort is that it's still the fastest average-case- > in-practice of the common algorithms.

I don't think that's true if you average over the available distribution of _implementations_ in the wide. Almost all implementations do one to three of the "crimes" I mentioned above. And frankly, I've met too much real world cases that triggered an n^2 behaviour on an existing implementation to ever settle for anything with worse than n*log n worst case.

If you're looking for the fastest-in-both-theory-and-practice algorithm, that's TimSort, but it's not in place. The places _in practice_ where Quicksort is the right answer are few and far between. I haven't seen any in the last 10 years.

</comment></comment></comment></comment><comment><USER16> <http://www.itl.nist.gov/div897/sqg/dads/terms.html>

</comment><comment><USER17> Since when is dynamic programming considered an algorithm?

</comment><comment><USER18> pfptw2m</comment>


American Trees Are Moving West - <AUTHOR> https://www.theatlantic.com/science/archive/2017/05/go-west-my-sap/526899/?single_page=true <comment><USER2> I wonder what affect 30+ years of "free tree" programs that various states and environmental clubs run for arbor day and such has had. Growing up in the midwest/great plains, ever year in elementary school we were given trees to take home and plant for arbor day. Little sticks, maybe a foot long with a small handful of roots, wrapped in damp paper towels to survive the trip home.

Someone says "oh, white oaks grow alright across the entire state, and their acorns are a good food source for the local wildlife" and they send out a few thousand of them for arbor day via elementary schools.

Some of them even survive. 30+ years later, those trees have dropped millions of acorns, most of which feed squirrels and deer or rot away, but some turn into trees.

Rinse and repeat every year. Seems like you could, over the course of nearly 40 years, unintentionally shift the population of a tree species.

<comment><USER3> The interesting question for me is this: is there a reason to believe human seed distribution is biased towards the west?

If it is human-influenced, what are the determinative factors? Do humans favour certain seeds/trees in this selection? Are the seeds geographically distributed evenly, or is distribution biased towards the west? Is the westward growth bias caused by seed distribution, or locale viability? If humans weren't distributing the seed, are there other vectors that would provide an equivalent function?

<comment><USER4> I'm not saying it explains everthing they found (they may even have corrected their stats for it), but the area they studied seems closer to the east coast then to the west coast. Moving long distances east is hard there for trees. First, they would hit larger populations centers; then, the ocean.

<comment><USER5> So basically they're moving west because there's more space there? ;)

</comment></comment></comment></comment><comment><USER6> The "no one knows why" seems to be a stretch. It mentions in the article that western areas are less moist and moisture levels have been increasing. Seems like they're pretty confident that's the reason.

<comment><USER7> Yeah, the <title> of the page is the non clickbait version: "Climate Change Is Forcing Trees to Move Northwest". Completely at odds with the headerline...

</comment></comment><comment><USER8> What really should interest/worry you about this is the ecological changes that will follow.

Different animals and birds have special relationships with certain types of trees. When forests change, animals change. This can have a compounding effect, as animal changes can change forests in turn. A few small changes here and there can be the catalyst for much larger changes over time.

</comment><comment><USER9> Doesn't say how much of this is due to new trees on the leading edge compared to less trees on the other end. In the analogy of a line of people, adding people to one end will move center that way as long as you don't add more to the other. The trees could grow each way or shrink each way and still show a movement, as long as one side is doing so at a different rate.

</comment><comment><USER10> Higher atmospheric CO2 levels allow plants to survive in lower precipitation environments.

[https://www.sciencedaily.com/releases/2013/07/130708103521.h...](https://www.sciencedaily.com/releases/2013/07/130708103521.htm)

</comment><comment><USER11> Why not? [https://www.youtube.com/watch?v=7NZ04BG7TfA](https://www.youtube.com/watch?v=7NZ04BG7TfA)

</comment><comment><USER12> Can you blame them? Look at how people vote East of the Pacific coast states. It's disgusting. If I were a tree, I'd move immediately.

</comment><comment><USER13> Trees have been around for a very long time, hundreds of millions of years. Much longer than we have been. Possibly something they "know" at a genetic level is a sort of risk assessment where species are calculating better long term odds for the species based on local trend. They could be migrating toward areas where less adaptation is needed to survive; or maybe even a substantial but available path to adaptation via recessive genes.

This migration isn't the first. They've been doing this all along.

</comment><comment><USER14> My first thought upon looking at the map: they're moving away from the coastline.

</comment><comment><USER15> what the hell does "only explains at least 20%" mean?

<comment><USER16> Its just another one of those fallacies about statistics people came up with. [https://en.wikipedia.org/wiki/Explained_variation#Criticism](https://en.wikipedia.org/wiki/Explained_variation#Criticism)

</comment></comment><comment><USER17> We know why. It's climate change. It says so in the freakin' article!

r/savedyouaclick

<comment><USER5> Actually, no, it doesn't. The subtitle (!) is:

> Climate change only explains at least 20 percent of the movement.

So what explains the other 80%?

<comment><USER18> "at least 20%"... so at most 100%?

<comment><USER19> Pretty much, yeah. "Fei and his colleagues argue that at least 20 percent of the change in population area is driven by changes in precipitation, which are heavily influenced by human-caused climate change". Could be more than 20%, but that's what they have solid evidence for so far.

</comment></comment></comment></comment><comment><USER20> Harumph.

<comment><USER21> Would you please not post unsubstantive comments to HN?

<comment><USER20> "It kills him when people say mean, stupid things in comment threads."</comment></comment></comment>


Ask HN: Econometrics, Bioinformatics, Game Theory. Python or R? - barry-cotter

Come next October I'll be studying Econometrics, and that seems as good a reason as any to finally take the plunge and learn to programme.
Python or R?
I'm under the impression that Python is a lot easier for a total novice to get into, and since its designed to be a general programming language rather than a statistical package  that's Turing complete I'd be able to move to simulating games with the greatest of ease.
Also, IAUTI that bioinformatics really, really likes NumPy and SciPy and if I can grok the statistics behind econometrics it'd be a sane amount of work to learn another area I'm really interested in.
Recommendations, tutorials, books please. <comment><AUTHOR> I'd recommend Sage. It is a math-oriented Python environment that includes many of the popular open source math packages. It also has a worksheet mode that lets you save an interactive session, which is something R can do but not python.

In fact, Sage includes R so if you really want to you can use R functions from within python (unfortunately, it's a little messy).

<http://www.sagemath.org/>

</comment><comment><USER2> I would recommend Python as a first language. There are tons of users (which is very nice when you run into problems), and it's useful for all sorts of problem domains.

<http://diveintopython.org/> is a good place to start.

(Or, if you aren't going to start learning in the immediate future, this is looking pretty promising:

<http://diveintopython3.org/> )

O'Reilly's "Learning Python" seems pretty decent too: <http://oreilly.com/catalog/9780596513986/>

<comment><USER3> I really liked How to think Like A Computer Scientist <http://openbookproject.net/thinkCSpy/index.xhtml>

A friendly way into programming in general and uses Python.

Also, there are ways to connect R and Python.

</comment></comment><comment><USER4> As a programming language Python would be more suitable, 'cos it's more generic.

When it comes to Econometrics or any other statistical analysis, you would probably call built-in/library/module functions to calculate things like Gini, Theil.

Most of these functions are available for python or even R. So you can learn the basic syntax for both, and figure out what is the best way to do what you need, as you go along.

</comment><comment><USER5> my friend told me that econometrics is his hardest phd qual. iirc he mentioned statistics, time series, and stochastics (very heavy maths) ... to me those seem to be best handled with statistical package like R

my bio friend told me about string matching, she used perl. i'm not sure if R can do pcre regex pattern matching.

so yeah, you may end up using R and python. if i have to decide, i'll use pyton, because it's more flexible</comment>


Microsoft Confirms Windows 10 New Monthly Charge - <AUTHOR> http://www.forbes.com/sites/gordonkelly/2016/07/14/microsoft-confirms-windows-10-new-monthly-charge/ <comment><USER2> _That cost will be $7 per user per month but the good news is it only applies to enterprises, for now. The new pricing tier will be called "Windows 10 Enterprise E3" and it means Windows has finally joined Office 365 and Azure as a subscription service._

> _it only applies to enterprises_

Even so.</comment>


Have a True Hobby, Not a Side Hustle - <AUTHOR> https://www.vox.com/the-highlight/2019/11/25/20975946/hobby-what-should-i-try-how-to <comment><AUTHOR> I'm not sure I agree with the advice to not choose aspirational hobbies.

I want to be a guitar player so I bought a guitar (in 1996) and have been slowly learning it. I assume at some point it will be fun, but I'm not there yet. This article has me questioning if maybe I should give up...</comment>


How Boston is rethinking its relationship with the sea - <AUTHOR> http://www.bbc.co.uk/news/magazine-29761274

<comment><USER2> Yea... so as a Bostonian this will never happen. There are cheaper options like dropping a flood-wall out in the middle of the harbor.

If anyone thought the Big Dig was a clusterfuck then they have seen nothing if this vision became a reality... the idea of turning the Back Bay into a series of canals... an area built on landfill and poorly documented about where infrastructure is located along with tons of historic residential architecture is going to cost many times more money. Not to mention the Back Bay neighborhood association, which is probably the most powerful neighborhood associations in the United States due to a combination of power and wealth would throw a nutty (and rightfully so).

<comment><USER3> The big dig was not nearly as poorly executed as you might assume, digging in the middle of a major city is simply rediculusly expencive.

IMO, the best option is to simply raise buildings following the Chicago model. [http://en.m.wikipedia.org/wiki/Raising_of_Chicago](http://en.m.wikipedia.org/wiki/Raising_of_Chicago). A major advantage being you don't need to worry about flood control measures failing. It's not like the buildings are actually worth all that much it's 90% pure land value with a token for the structure. (Aka move the same building to the middle of an Iowa cornfield and suddenly there not so valuable.)

<comment><USER4> Either it was poorly executed or disingenuously planned.

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

'The Big Dig was the most expensive highway project in the U.S. and was plagued by escalating costs, scheduling overruns, leaks, design flaws, charges of poor execution and use of substandard materials, criminal arrests,[2][3] and one death.[4] The project was originally scheduled to be completed in 1998[5] at an estimated cost of $2.8 billion (in 1982 dollars, US$6.0 billion adjusted for inflation as of 2006).[6] However, the project was completed only in December 2007, at a cost of over $14.6 billion ($8.08 billion in 1982 dollars, meaning a cost overrun of about 190%)[6] as of 2006.[7] The Boston Globe estimated that the project will ultimately cost $22 billion, including interest, and that it will not be paid off until 2038.[8] As a result of the death, leaks, and other design flaws, the consortium that oversaw the project agreed to pay $407 million in restitution, and several smaller companies agreed to pay a combined sum of approximately $51 million.[9]'

<comment><USER3> I don't think they did a good job, but your cost estimates are rather divorced from reality. Inflation is a poor way to measure projects like this. Construction costs in the short term are only loosely coupled with overall inflation. Consider the just price of copper: [http://www.nasdaq.com/markets/copper.aspx?timeframe=10y](http://www.nasdaq.com/markets/copper.aspx?timeframe=10y) Though most construction raw materials had similar price swings.

Anyway, the project finished in 2007 amid a huge housing boom in the US which significantly increased costs. A well managed project could have probably been ~30% cheaper, but the much of the "190%" over run was well outside the projects scope.

For comparison the hover dam is generally thought of as a well executed project despite ~98 directly related fatalities during construction. IMO, we have become vary critical of large construction projects in large part because rebuilding infrastructure is simply far more complex than clean slate construction in the middle of the wilderness, and even worse it negatively impacts peoples lives during construction. Especially in places like HN considering how few software projects are on time and under budget.

</comment></comment></comment></comment><comment><USER5> It'd be nice to know in exactly what capacity this was discussed.

The article just says that "architects, developers, real estate experts and business owners were brought together in May to discuss ways of preserving the city's buildings in this watery cityscape of the future".

Who set this up? Were canals a serious suggestion with a reasonable amount of support, or just thrown out as a possibility during a brainstorming-type exercise?

</comment><comment><USER6> I was under the impression that in places like Amsterdam, canals were useful historically because people didn't have motor vehicles so they were a highly effective way to move goods around town (and to/from remote farms, towns and cities via rivers like the Amstel and IJ, other canals, and the sea).

Today, while extant networks may remain quite decorative and interesting, urban canals seem unlikely to be used for any purpose other than high-end recreation / tourism, and the article does not address any way they'd be directly useful for flood control. It's not even made clear they'd really assist in keeping seawater out of peoples' homes and businesses.

<comment><USER7> I was under the impression that the canal networks in the Netherlands were similar to the South Florida Water Management District's canal system. The primary purpose of the network is to prevent southern Florida from reverting to swampland, which is the natural tendency due to the geology, geography, and weather patterns. Since much of the coastal Netherlands is in a similar situation, I always assumed the canals were primarily for moving water to the North Sea without flooding out the low-lying areas.

<comment><USER6> That may be the case for de kanalen, but I don't think it explains de grachten -- that is, the Netherlands has canals criss-crossing the countryside which might accomplish flood control purposes, but when there are canals in between every other city street, that's another matter.

Either way, the article failed to explain :)

(Fun fact: the word "gracht", Dutch / Nederlands for street-canal, uses the voiced velar fricative, a sound which English eschews. Good luck pronouncing it right. :b)

</comment></comment></comment><comment><USER8> Somewhat worrying that the people in charge of protecting Boston from flooding would waste their time on such an obviously impractical and pointless idea.

Even if Boston already had canals they would still need to build surrounding flood protection systems just like Venice and Amsterdam. So why build the canals?

Interior canals can actually make flooding more likely as New Orleans learned when breaks along canals were responsible for flooring the city after Katrina. The solution - as a everywhere else - was beefed up perimeter defenses not more canals. Canals just make the problem harder and the risks greater. Why build a system to deliver vast quantities of water to the center of a city?

The real problem with building reliable flood protection is that it is impossible to fully test and may not be tested by nature for a very long time. This requires sustained effort by level headed engineers and planners not politically motivated dreamers.

<comment><USER9> I share your skepticism, but there's one thing you might be overlooking.

Canals can act as a buffer in case of heavy rainfall. This requires the canals not to be connected to open water. In anticipation of heavy rainfall you would pump water out of the canals, into open water (sea). The canals can then act as a temporary buffer for excess rainwater. True, this wouldn't help against dike-breaks.

Related to this: in Holland there are many farmlands in the proximity of rivers that are designated as buffers like these. When necessary, they let these farmlands run full of water in a controlled way to prevent downriver cities from flooding.

<comment><USER7> > This requires the canals not to be connected to open water. In anticipation > of heavy rainfall you would pump water out of the canals, into open water > (sea).

Not necessarily. The South Florida Water Management District canals ultimately drain directly into either the ocean or the Everglades. The canal network has a series of flood locks and pumps, though, which can be used to manipulate water levels and force water to flow faster or slower than it would naturally.

Municipal drainage along the coast in southern Florida is also connected directly to the ocean. In that case as well the drainage system is augmented by high-capacity pumps to force the water out of the system and into the ocean. The municipal green spaces act as the buffers if the pumps cannot keep up with the rainfall.

</comment></comment></comment><comment><USER10> I don't understand how this will keep the houses from flooding. Creating some canals won't lower the sea levels and keep buildings from flooding.

</comment><comment><USER11> The feat of engineering to create the Back Bay is impressive by itself. Just a matter of time before more changes are needed.

[http://en.wikipedia.org/wiki/Back_Bay,_Boston#History](http://en.wikipedia.org/wiki/Back_Bay,_Boston#History)

</comment><comment><USER12> This article cherry-picks one idea among many. A better article:

[http://www.bostonglobe.com/business/2014/09/29/venice- charle...](http://www.bostonglobe.com/business/2014/09/29/venice-charles- boston-solution-rising-seas-includes-novel-canal-system-back-bay- canals/F7u38NjMW9htumJ9GK2VnI/story.html)

</comment><comment><USER13> Here's my pie in the sky plan. We'll send all the excess water from melted icecaps to mars for terraforming purposes.</comment>


Designing a collision avoidance system for iPhone and Android - <AUTHOR> https://emson.co.uk/2015/02/designing-a-collision-avoidance-system-for-iphone-and-android/

<comment><USER2> > If you enjoyed this post, please could you up vote it on HackerNews – > [https://news.ycombinator.com/item?id=9008131](https://news.ycombinator.com/item?id=9008131), > thanks very much. Ben

That's a no-no: [https://news.ycombinator.com/newsfaq.html](https://news.ycombinator.com/newsfaq.html).

<comment><AUTHOR> ahh ok... will remove it

</comment></comment><comment><AUTHOR> So this article is about how Heath Robinson a British illustrator, similar to Rube Goldberg, would build a contraption if he was around today. Also it tries to find inspiration points that might help the reader in innovating. What do you think?</comment>


AMD announces new OpenCL programming tools - <AUTHOR> http://pcper.com/news/General-Tech/AMD-announces-new-OpenCL-programming-tools

<comment><USER2> Actual announcement: [http://ir.amd.com/phoenix.zhtml?c=74093&p=irol- newsArtic...](http://ir.amd.com/phoenix.zhtml?c=74093&p=irol- newsArticle_pf&id=1572937)

Link to the new debugger: <http://developer.amd.com/tools/gDEBugger/Pages/default.aspx>

<comment><USER3> The debugger requires Visual Studio, bummer.

<comment><USER4> gDEBugger was a cross platform opengl/opencl debugger before amd bought them. I am surprised/disappointed to see them offer only a windows version.

</comment></comment></comment><comment><USER5> _Task Manager API: A framework to manage scheduling kernels across devices_

This makes me wonder... how useful is the GPU for kernel development?

<comment><USER6> I think they meant <http://en.wikipedia.org/wiki/GPGPU#Kernels>

</comment></comment><comment><USER7> AMD's GPU support for Linux has always been spotty. How much does this depend on their hardware drivers?

</comment><comment><USER8> Wait, wasn't Microsoft's OpenCL alternative DirectCompute?</comment>


Ask HN: Blank's new book? - <AUTHOR>

Hi, anyone read Steve Blank's new book yet?  I'm a bit reticent, as I generally buy Kindle books these days, but this sounds like the kind of thing that may be worth an exception.  I'd be curious to hear what those of you who have already received it think. <comment><USER2> I have both Steve Blank's previous book, "Four Steps..." and Blank's and Bob Dorf's new one. (Got it on March 5th - the flyleaf says it was printed in March 2012 - you can still smell printing press oil on this one) Though I haven't read it through (and don't plan to - the first thing the authors say is don't read it straight through, and don't read too much at one sitting - this is more like a car repair manual, to be consulted as needed for specific problems), from reading bits and pieces I'd say it's not a rehash of FSTTE. It's better because (1) the layout is easier on the eye and mind; FSTTE's dense text, with modifiers dangling shamelessly all over the place, had a kind of geek charm, but it encouraged the reader to sit down and study it, cogitate over it, and ponder over it. The Startup Manual's design is biased towards action. The authors' car repair manual image rings true. (2) This book provides advice on "physical object"i.e. non web-based startups. With its bullet point summaries interspersed throughout the text and countless vignettes that bespeak years of experience, this reminds me of, and is as good as, Richard White's The Entrepreneur's Manual.

</comment><comment><USER3> It hasn't been released according to amazon. It gets releases this month: [http://www.amazon.com/gp/product/0984999302/ref=oh_o00_s00_i...](http://www.amazon.com/gp/product/0984999302/ref=oh_o00_s00_i00_details)

I did pre-order it, even thought I only buy Kindle books now. I think it is worth, I have read the other two and I liked them, so I am assuming that this one will be worth it.

<comment><USER4> I'd just like to point out, if you pre-order via steveblank.com (using Amazon) you get charged full price, and pre-order via Amazon gets you a reduced price. I don't know if it will get updated when it ships.

I didn't notice this until I clicked aespinoza's link.

<comment><USER3> That is interesting. If you buy through amazon, I wouldn't worry too much because of the Pre-order Guarantee:

"Pre-order Price Guarantee! Order now and if the Amazon.com price decreases between your order time and the end of the day of the release date, you'll receive the lowest price."

</comment></comment></comment><comment><USER5> According to Book Depository my copy was shipped yesterday. (Of course, it has yet to make its way to my doorstep in New Zealand.)

</comment><comment><USER6> I have pre-ordered through Barnes & Noble. So far I haven not heard anything yet. I think it is going to be late for us. Really wanted the kindle format. But from Steve's blog I found out they are not releasing e-book in any near future. So I was forced to order paper edition.</comment>


Plupload - A beautiful file uploader powered by jQuery - <AUTHOR> http://plupload.com/

<comment><USER2> Bit of a negative sentiment - pity. Beautiful is a rather subjective thing. It looks not too shabby and there is the core api if you want to make it look really different. The big thing to me is - it is here NOW, it seems to work in the hodge-podge of browsers I've to support, nicely falling back with decreasing browser smartness. And it uses jquery - which I happen to use as well.

I've an application shipping in a few weeks, which has some minor features which require uploading files. Those are not that often used, so I've not spent much time on the upload part yet - just a basic file-upload form.

Things like this however allow me to make those file-uploads look way nicer (from the point of view of the end-user) with very little time investment from my side. And it allows me to do it NOW. And if I want to be cheap, I can get it even for free! (I know, I know, GPL is not about being cheap, leave the torches at home please ;-).

Given the above, I'm not overly concerned as to how it works out over 3 years from now. I've to ship in 4 weeks. And whatever solution I choose now is not set in stone.

So a big "thanks" for a) putting in the hard work and making the tool in the first place and b) bringing it to my attention.

(having said that: I also tripped over the large plus sign in the header ... - but that is easily modified of course, not a major thing).

<comment><USER3> My point is.... Yes, ship in four weeks, but ship to modern browsers with an elegant html5-only decision

Old browsers can have a single, basic file input.

</comment></comment><comment><USER4> The ui isn't very good. The static header looks like the button that you press to upload.

<comment><USER5> I read this comment, went to look at it, and _still_ clicked on the header just because I couldn't believe it wasn't actually a button.

Calling it "not very good" is a lot nicer than it deserves. It makes no sense to sacrifice functionality for "beauty" in a file upload widget. (And it's not like the rest of it is especially nice looking anyway.)

I'm also really kind of wondering why it's so large. It takes up 258180 pixels by default--that's about a third of my browser window. Unless you're putting this on a page that's meant only for file uploading, it's probably going to take up too much room.

The fact that gigantic, non-functional, unwieldy things like this (and TinyMCE, which happens to have been developed by the same people) are considered the best solutions is one of the reasons I've really come to dislike working with the big open-source CMS's.

<comment><USER3> As mentioned below, this seems very good <http://valums.com/ajax-upload/>

I'd be more comfortable styling this to fit my needs than a forced fully blown gizmo

<comment><USER6> The "forced fully blown gizmo" is basically a demo for the underlying code and is completely separate to it. Looking at the github repo, there is apparently a new style jQuery UI demo to replace this.

As someone who has built code against it, you would be foolish to dismiss it.

</comment></comment></comment></comment><comment><USER3> I'm frustrated that in this day and age this is the best solution people recommend.

Are there any elegant HTML5 multiple file uploaders out there with drag and drop?

That, and direct S3 upload, is the Holy Grail for me.

<comment><USER3> I mean, screw supporting old browsers

Given them a basic, single file uploaded with no fancy

A clean HTML5 implementation, with nice features, is more valued

<comment><USER7> Is this a form of self-satire? I don't understand what is going on here.

<comment><USER3> No, I genuinely would prefer the browser natively handle file transfers rather than relying on old browser plugins and lots of hacks to get old browsers to work

</comment></comment></comment></comment><comment><USER8> @samdk: Plupload is separated into a core API and a jQuery widget that has the UI. So if you don't like the UI you can just change it anyway you like. Also I think you should buy a bigger screen if you think it's to large. 800x600 isn't the default screen size these days. :)

@xcvd: HTML5 upload is far from ready yet. Since only the absolutely latest browsers support it and some of them have pretty serious bugs or limitations. Also IE has still like 50% of the market so unless that changes soon there is a need for fallbacks to Flash, Silverlight etc. We just wanted to develop an uploader that would work regardless of what technology the user has.

<comment><USER9> "You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support."

My browser has <input type="file"> support but it's being completely ignored. I hope whoever wrote this markup will study progressive enhancement, because ugly is better than unusable.

<comment><USER10> You can chose to enable/disable the various uploading methods at runtime, including HTML4. This must have been disabled on the example you looked at.

</comment></comment></comment><comment><USER10> I have used this, it really works well. You dont have to use the example UI they give you, you can build your own. It throws all the relevant events from a unified API. The UI you see exists in a totally separate library from the core.

I have put it in a couple of projects. Best file upload solution I've found.

It's from moxiecode, the people who did TinyMce.

</comment><comment><USER11> Uploadify is also a jQuery plugin and works really well for us:

<http://www.uploadify.com/>

</comment><comment><USER12> There's this: <https://github.com/jurisgalang/jquery-sexypost> which is a fit for a more general use-case, but it allows you to attach to upload events and roll your own progress indicator.

</comment><comment><USER13> Selected three files and started uploading, some seconds later it crashed my Chrome (10.0.628.0 dev on Win7). And that header is really a mess (like richcollins said). Too bad I can't say anything positive about it (I would if it worked for me :)).

</comment><comment><USER14> I don't understand. Why is this any different than most jquery upload plugins?

Also, I tried the demo and didn't want to use Google Gears. After I didn't allow Gears permission, the uploader stopped working. This is a problem.

<comment><USER10> File a bug. Be a good citizen.

</comment></comment><comment><USER15> I just switched one of my projects to this. It's nice, but doesn't properly relay responses from uploads to other domains. I understand that may be a limitation of the Flash runtime though.

</comment><comment><USER16> Ugh flash...pass

</comment><comment><USER17> Dragging a file into the browser window (Chrome 8, Win 7) I get a popup saying "Invalid extension: <full filename>".

I guess it can use some more work.</comment>


Show HN: Picture-in-picture (PIP) for Windows 10 - <AUTHOR> https://github.com/Lakritzator/Pip/ <comment><USER2> Sounds cool. Screenshots of the app being used would be nice.

</comment><comment><USER3> I need this for linux to play youtube while working.</comment>