Hacker Newsnew | past | comments | ask | show | jobs | submit | outotrai's commentslogin

I'm interested in this sort of competition, but honestly, I don't know enough to even begin. What do you recommend to someone who'd like to learn enough to participate in these competitions?


Hey, cool. I know just how to answer this question.

The absolute best resource for competitions - well, that I've found so far - is a little website called train.usaco.org . It gives you a ton of practice, starting out easy and growing slowly more difficult, but it always helps you along the way. It's for high school students, but don't let that trick you into thinking it's easy. It's preparation for the IOI, probably one of the hardest coding competitions in the world.

The websites topcoder.com and codeforces.com host weekly programming competitions. These are great practice as well to see how you stand and where you can improve. I signed up for both and added them to my calendar.

Topcoder also has a wealth of old problems - somewthing on the order of a few thousand. These are great for speed trials. Plus, you can check other coder's solutions to see how they solved certain things. One of the best ways to learn new tactics is to browse through the code of people who solved a problem faster than you. I've picked up some amazing tricks this way.

The uva online judge and sphere online judge have literally thousands of problems to solve. I can't say as much about them, since I haven't really delved too deeply into the problemsets on those websites yet - I've mostly stuck to usaco for now.

You'll come to value a straightforward approach over using language tricks, especially things that you don't fully understand. If you don't know exactly what your code is doing, debugging (and you will debug it if you don't understand it) becomes a nightmare.

I would recommend learning C++. As much as HN tirades against it, it's definitely the fastest language, and it's really not all that bad once you know your way around. Codeforces allows for python, but I've had problems with solutions that take too long sometimes :(

Email me at johnfn at gee mail dot com. I'm always looking for people to compete with, and I would be glad to provide hints and tricks if you run into problems :)


If you (or someone else) wouldn't mind taking the time to explain it, I'd really like to know why your unsupported and vaguely anti-Ruby statement is so popular. I'm assuming that it means that the problems with Ruby are so widely known that you don't even need to spell them out in order for people to agree with you, but I guess I didn't get the memo. Why "really shouldn't" we? (Serious question - thanks.)


One thing, of all the dynamic languages the default Ruby implementation is by far the slowest. For anything that is slighty computational expensive, the default Ruby implementation is poor. Also think green, if you have lots of computation in a slow language, that easily adds up in a large data center in form of wasted electricity, which adds to cooling and is generally expensive. Some Ruby implementations try to get in the direction of, say, a Lisp implementation like SBCL - which is used by ITA. SBCL provides since quite some time a compiler that can generate reasonably fast code.


In Dan Weinreb's "Lisp for High-Performance Transaction Processing" talk he mentioned that SBCL was being used for QPX because of the quality of its compiled code (as I recall they started out with CMU CL so this was a natural choice).

For REs, Clozure CL was being used in part because faster compile times were more important and run time preformance was more than adequate; stateless business middleware is a very different beast than compute intensive route construction, where we can be sure the cutoff in optimizing choices is based on response time.

There were other reasons for Clozure CL, including the fact that it has a company behind it, one who's principles Dan and others have had long relationships with and ITA was buying one (man?)day a week of their services to support RES. SBCL is (has always been?) a volunteer effort.


I'm sure the remaining employees appreciate your keeping the company afloat.


I'm shooting from the hip here, but I think maybe there's a distinction to be made between ideas for a product and ideas as a product. The end result of the ideas of mathematicians is mathematics itself - furthering mathematics was the goal all along. Obviously ideas count when you're working within the realm of ideas alone. However, when the ideas are a means to an end (e.g., a movie, say), the implementation is what counts. You might have the world's greatest screenplay in your desk, but if you haven't gotten to the execution stage, what kind of movie do you have? (None.) Whereas if you'd started with something, anything, like walking trees fighting hobgoblins, say, or the idea that maybe humans are just batteries for supercomputers in the future, your movie might have a chance, depending on its execution.


You make fine points and I agree.

But if I may, it can be expanded on. In mathematics, a theorem is an idea combined with proof. In short, the idea is combined with the knowledge that it is a true and accurate fact (at least within the domain you are working in. Things are true in C that are not true in R), along with some idea why it is true emboddied in the proof. It is this combination of the idea with knowledge it is right that makes it valuable.

To be slightly more concrete, the idea that P = NP is not overly valuable. It is not yet proven either way and it could be true or false. A full proof would be tremendously valuable, and very surprising to many who are very confident P != NP. Creating a proper proof seems much more akin to writing the novel than it is to having the idea for the novel.


When will Rails 3 be formally released (as the stable, recommended version)?


Dive in, the water's fine! You may experience a few bumps along the way, but there are a lot of people already in the water ready to help you out. There are already production apps running Rails 3--just don't use it for anything mission critical.


I think that was what the parent's question was: when will it be ready for "anything mission critical"?


I've heard they're targeting RailsConf - but it's really anyone's guess. The frequency of commits doesn't seem to be decreasing.


How did you and do you decide which services to provide? How do you gauge demand as you're thinking of possible products?


I think he means that he shouldn't be obligated to sign up for or get involved with any service that he doesn't want to just to protect his reputation. Sure, you don't have to pay the mafia protection money, but what happens if you don't?


I don't use Ruby very much, so I can't respond to the bulk of your comment, but I wanted to note that Dive Into Python was first written for Python 2.x, then rewritten for Python 3, not the other way around.

http://en.wikipedia.org/wiki/Mark_Pilgrim#Dive_Into_Python


I didn't contradict your statement. Going by the discussions on this site on another thread, it seems that the Python 3 book is being backported. That only means that exercises/examples in the 3 book are being back-ported - perhaps they will be added to a new edition of the 2.x book.


Why do you say so?


Generally as a programmer working in a non-software/tech area you're treated as, at best, semi-skilled labour. Sure you can program but that's nothing compared to the complexity of mechanical engineering/microbiology/whatever.

You tend to be treated as necessary but undesirable. Someone that I, your engineer/doctor/professor boss who is far smarter than you, will have to waste time telling what to do. All so you can go do the fancy typing necessary to make the software do what I say.

In terms of respect level its not uncommon for non-programmers to lump programmers in with book keepers, compliance officers and other necessary but undesirable people.

It would probably be different if you were both a biologist/trader/chemical engineer AND a programmer. That would be entirely different than just being a programmer working within the domain.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: