skysight-inc/HackerNews huggingface dataset:
(Disclaimer: Not meant as flamebait)

Not to be a prick, but if you're having "typing" problems with Python, you're using it wrong.

Types are almost irrelevant in Python. What matters is whether, in a given situation, the method you're calling is supported and does what is intended. The actual type/class of the receiving object doesn't really matter, ditto for any arguments you pass to the method.

While this may seem highly unsafe and brittle, it has important benefits. You can just hack up some code that "just works" in a few minutes, without having to sacrifice a goat to the compiler first, making sure that all the correct types are specified, subclasses are defined, interfaces are implemented completely, etc. The rigid type systems in other languages often require this and more; making changes to your software becomes a chore. Rapid prototyping this is not.

In Python, when used correctly, you don't have this problem. Write a bit of code, write a test, run it, and decide what to do next. Ideal for testing out ideas. It doesn't work? Throw that shit out and write something else; two minutes later you'll be testing your new code again. Yes, you do need to have unit tests, but the same is (or should really be) true for most languages. Just because something compiles, doesn't mean that it does what you want. (Except maybe in Haskell. :-)

Interestingly, the quickly-written prototype might well be good enough to become the actual production code, with some additions. Just keep you tests up-to-date, for reasonable use cases, and there's no reason why your code shouldn't work in real life. Sure, that function foo(x) that wants to call x.bar() will fail if you call it with an x that doesn't support the bar() method. So don't do that, then! ;-)

Anyway, to summarize, I personally would much rather have Python's flexibility, paired with unit testing, than Java's lack of flexibility paired with compiler checks.
Oh, I want to play! Here's Perl:

map { $_*$_ } grep { $_%3 != 0 } map { $_+1 } @a

Interestingly, in this particular case Perl seems to have way less syntax than ruby or python, which I find rather ironic. It does have to be read backwards though, because of the syntax of map and grep...
If all you need is coordinates, there's always W3C's geolocation API: http://dev.w3.org/geo/api/spec-source.html
I think what he is saying is, if you program enough C++, you'll grow to dislike it.
Get out and talk to people. If you don't have a good startup idea then join someone else's. I'm looking for people to work with right now (Edinburgh).
I tried the search for arraylist in Google. When I do it - the returned javadocs are for an out of date set of docs. This is one of the problems this search is attempting to address.
You need JavaScript, and though there are lots of libraries that make things simpler, you'll need a good understanding of JavaScript and preferably have a good understanding of the DOM as well.

Libraries will help you with the DOM, but not a ton. They won't help you with the js.

I suggest you start with a library, but make sure you understan what you're doing in terms of the DOM.
I'm not really not complaining about anything - the shortcoming clearly lies within me and not in Django or Python.

The purpose of this thread was merely to gauge what kind of paradigm shift people who were used to programming in C or C++ generally experience when they move to Python. Some people seem to find making the jump easier than others - I personally have found it difficult and have made little progress so far. Since I generally consider myself good with computers, I find this a little unnerving.
Why do you want to start a start-up?

Perhaps it may be wiser to work for a start-up if an idea hasn't jumped at you. Just keep an open mind and look out for things you can do better, more efficiently. Then make a system out of it.
I am also a huge fan of this. Even if you don't have the big hit, you have a good chance of stumbling across something decent that can sustain you while you search for the big hit. The problem with this technique is I never know where to draw the line between "wasting your time" and "staying determined".
Crockford's Javascript: The Good Parts, Stoyan Stefanov's books, and Zakas's High Performance Javascript. Also don't forget about http://developer.yahoo.com/yui/theater/. There are a ton of good video lectures to learn from.
Eclipse Helios
> If Django were in C, I would know what a request object really was, grep for it, and look up the header file.

If Django were in python, you wouldn't even have to grep

>>> import django.http, inspect
>>> print inspect.getsource(django.http.HttpRequest)
Much of Java's complexity is cultural and not imposed.

Take the Java web framework, Play, as an example.
http://www.playframework.org/
What about the winner-take-all markets?
He who first resorts to pointing out logical fallacies has lost the debate.
Yup, I'm in touch with javery for this exactly. Thanks!
Sorry, I wasn't aware that was a "requirement". I'll keep it in mind for future posts.
> hints about what I might read to become better at the interface design aspect of my application.

Got to the internet archive, dig out the first original website of 37signals. Read the site, think about it. They were a cutting edge design firm back then. Also check out Hilman Curtis. Read the stuff on the website A list Apart. After that you will have a certain understanding of UID and related stuff. The rest is doing, showing off, iterate, iterate, iterate.
Don't be in a rush. Just give yourself time to explore and think about problems, and you'll know when you hit on the right idea. If you rush it you'll probably end up forcing it too much.
Most of these patterns come from Smalltalk (which was probably the original language of complex enterprise OO systems). I think that what made Java this kind of entrprise language is that it was reasonably similar to smalltalk so all these patterns and concepts can be reused and on the other hand it is similar to "normal" programming languages so average programmer does not have problems with it's workflow and IDE (as is the case with ST). On the other hand most uses of design patterns in Java code (eg. 90% of uses of Observer pattern, especially in cases when it is called Listener) seem to be to be compensating for fact that Java is not Smalltalk(/JavaScript/Ruby/Python/C# whatever with first class classes and methods).

JavaScript is language that is very different from anything else. Depending on how you look at it it has either unconventional semantics (majority view) or unconventional syntax (my view). It's object model is strong and often useful (you can emulate class-based inheritance with it, not the other way around), but I agree that it is to some extent afterthought (although I have strong feeling that our reasons are very different). What is probably largest problem of whole JS is the "Java" part of it's name and weird syntax deliberately designed to "look-like-Java" or "look-normal", which simply does not match underlying semantics.

Coming from C/Unix background I actually consider the IDE thing burden in itself. I expect that there are some easily editable source that is transformed by series of some steps into final program, but all changes happen only in the original input. Which is simply not case in Java/ST world, where you essentially need pretty complex IDE (on the side note: few years ago some Java IDE I was using for quick experiment forbade me from saving source file with syntax error with it... WTF?).
Doesn't python have sorted sets? Oh, what a pity. Does python only have one single implementation of sets? Too bad. Is the runtime behaviour of that implementation documented? Let's take a look ... I'll be back. This could take a while.
I was in a 'similar' stage 2 years ago. I grouped with 3 of my friends and started having conversations on a daily basis. All of us came from different background -tech, finance, marketing, research; but had the same start-up itch. We threw ideas on the wall, critiqued them, followed up with some research. Eventually we found our start-up idea which btw has evolved into something completely different in 2 years. So:
1. Form a core group
2. brainstorm, read, research
3. DO IT
I think America is saturated and suitable for people who will live on http://en.wikipedia.org/wiki/Passive_income
>IOW remarkably low LDL concentrations increase death rates.

Since you must have read the article, given that you're citing it, what were your thoughts on the following things that I found troubling:

(1) People were stratifed according to post-treatment TC, not according to any baseline measure, LDL-C, or an appropriate compound measure of risk. In other words, this is all post hoc, and highly suspect.

(2) The group with low on-treatment TC was overwhelmingly male (>60%, vs 30-40% in other groups) at baseline.

(3) The groups with low on-treatment TC had higher blood pressure (53-58% vs 39-48%) at baseline.

(4) The groups with low on-treatment TC were overwhelmingly more alcoholic (45% vs 28%) at baseline.

(5) The groups with low on-treatment TC were overwhelmingly more burdened by liver disease (11-16% vs 8%) at baseline.

(6) The groups with low on-treatment TC were overwhelmingly more likely to smoke (30% vs 15%) at baseline.

In other words, there are plenty of reasons at baseline! for the low TC group to exhibit increased risk of all-cause death. Perhaps the most interesting conclusion is that the statins appeared to protect these hypertensive male smokers from cardiovascular disease!

Your conclusion is almost certainly incorrect (and probably inverted, in fact), due to the confounders that I've enumerated above.
Objective-C is fairly simple, while Cocoa is vast and complex. The distinct is important.

It might take you awhile to get familiar with Cocoa and all its patterns built on top of NSObject.

"Cocoa Design Patterns, by Buck and Yacktman" is a very good book to get the big picture right, but might be slightly overwhelming at the beginning (as there are many patterns/ways to solve the same problem in Cocoa).

Read Apple's documents: I still find it the best way to learn the details of Cocoa. The writing is dry and quite dense, so you might need to read it multiple times.

Another thing to remember is that Cocoa is a framework: it demands to be followed and not be fought against.
I think an exhaustive answer is "mu". Focusing on the tools instead of the problem is bad.
Here are some suggestions I've seen on HN and elsewhere. Your mileage may vary. :-)

1) Work on something that interests both you and a cofounder.
2) Choose a potentially huge market.
3) Compete with big, dumb competitors in a market with no current winner.
4) Build something you would use yourself.
5) Build something for businesses, because there's less competition than there is for the trend-of-the-week in the Valley. And you can charge them money.
6) Choose an interesting hypothesis, and be prepared to pivot as you learn about the market.

Any other suggestions for choosing between startup ideas?
Ask HN:How many of you nerds "read" wikipedia?
It is my understanding that reading the encyclopaedia cover to cover is a long standing tradition in the nerd culture. These days the hardbound 22 volume encyclopaedia has become somewhat obsolete.Wikipedia is the wave of the future.

So how many of you read, I mean actually "read" wikipedia? As in just open the website and just start reading. I have been doing it for quite some time.(I started with superheroes and still reading about them, I knew there was a lot to know but didn't know there was this much. I usually skip things which don't really interest me in the title but even then its a long long read.)
What percentage of the market carries Tom Tom devices? It sounds like a tiny, tiny percentage. What would I be doing there other than proving the market for someone with the stomach to make the real money on the iTunes store?
One thing to look out for here is this: if you are writing getters and setters for primitive data types like strings and ints and stuff you're doing it wrong. Instead of

public Customer(String name, int custId)

do

public Customer(CustomerData cd)

where CustomerData is an object. In Customer you would have getters and setters for CustomerData rather than each item that identifies your customer. This is for extensibility: As your app grows, some part of it may need other ways to identify the customer. Adding these ways won't break your Customer interface. That's the purpose of the rigor of the design standard.

Now what I do, which goes against stated policy, is keep the CustomerData variables (String name, int custId, and so on) public so I can set them easily. The only time I require getters and setters for primitive types (for example, name) is if I were to read in data from a user generated form that needed to be sanitized.

My apps are full of these customized data objects, and it's a technique which has saved my ass as I added features etc.
>Basically the author prefers GIT and mercurial over subversion because of easier branching

That wasn't exactly the conclusion I got out of it. I felt like he expressed a slight preference for git and mercurial, but at the end he asked for people to envision what a web/SAAS version control system should really look like, since none of the 3 fit that bill, in his opinion.

(I agree with the second half of what you wrote that I'm not quoting here.)
Actually I sometimes come across old code I've written and think, "Wow that's really neat. I wonder who wrote this?"
This is actually a pretty old scam. I remember one time I helped a guy get a 'greyhound ticket' but the second time (weeks later) he asked me for money for the same thing I said no.

Although I am glad to hear that there are good people that give out there.
The World's Most Expensive Cities 2010
A couple of people contacted me about that. It would be probably doable for "free" content, delivered for a low-cost for offline watching via an iphone app with in-app purchase, then split 50/50 between learnivore and the author.

I would definitely ask IP owners first, just like I did before adding any content on the site.

Thanks for the suggestion!
Note that you start with "you're doing it wrong" and end with "I personally would much rather". :) You also switch from arguing against type checks overall (could be Haskell) to arguing against Java.

I'd say that strong compiler checks become more helpful as the size of a program increases. You can keep less of a big program in your head, and big programs have more code paths that could potentially need testing.
Oh, I won't discount them (I'm not good enough to be a prima-donna about it), and it's nice to know that I will see how to use it to my advantage as I play with it more.
I will keep that in mind, thank you.
couldn't have said it better myself
> Classic. Moral claims don't get you too far.

I think it's immoral to steal and kill etc., but that won't get me far arguing with you I guess?

> These things are complicated. But if you've already got it figured out, no need to discuss it I guess.

It's not just something I have figured out, there are economists that have thought about it. If you can explain how societies get wealthy by consuming more and producing less I would like to know.
Good 5 minute read.

Last slide asks a great question:

What would a revision control system built for
supporting deployed web applications be like?
I'm in exactly the same spot. What I did for the last 6 months or so was hanging out here on hacker news (taking the air in), bouncing ideas off with a friend and collecting and refining ideas on a password-protected wiki page.

With a bit of luck there'll come a startup with said friend out of this later this year.
Is there anything specific that you want to do? In some cases, there might be better books for you to be reading (like OpenGL books, if you want to make some types of games). And targeting Mac vs iOS is rather different in some ways (UIKit and AppKit have lots of little corners in which they differ).

Hillegass is basically bible for Cocoa (Mac) programming. But, its not the best way to learn Cocoa Touch (iOS) for iOS. For that, I'll second Skroob's recommendation of Craig Hockenberry's book. Also, Jeff LaMarche and David Mark's Beginning iPhone Development is rather good and I personally have a nice copy of Bill Dudney and Chris Adamson's iPhone SDK Development that I'll skim on occasion.

But, you don't need to read all three of them; they basically cover the same material in different (but equally good) ways. After you've worked your way through one of them, maybe pick up Erica Sadun's The iPhone Developer Cookbook or iPhone Cool Projects by Wolfgang Ante, Mike Ash and a bunch of other really smart people.

And at some point, move away from the path documented and write your own app!
What's good about C++ is that I know it well, so it's comfortable for me. Why someone just coming to it now would like it, I couldn't tell you.

I will say that when I came to Python I felt much lighter and faster as programmer. You forget how it can be.

And starting into Clojure recently just feels more "right". I avoided Lispiness for a long, long time, but Clojure seems to hit the proper balance for me.
[(i+1)**2 for i in a if i%3!=2]

Goes through the list once, and reads like set notation!
(and does i+1 once, which is what I assume you were going for with the separate [i+1 for i in a])
I'm not sure if you're kidding, but if not, that's an interesting rule of thumb. I can half see your point: when arguing with normal people, if you need to resort to pointing out their fallacies, it's probably not worth it. On the other hand, if you're arguing with a Philosophy major, then pointing out a fallacy doesn't necessarily signal failure. It's closer to starting round two.
I don't think so, but you can still try to keep as much logic as possible on the web. (E.g. by providing a browser window to your website and a button that does a POST to your API, and nothing else...)
A plug for a meditation resource that I help maintain:

http://diydharma.org

including a comprehensive howto guide:

http://diydharma.org/how-meditate
True. Or u can kill ur tom-tom market with ur own iTunes app.
The thing about tom-tom is it's a gps device. So u get easy adoption for a gps service. Because you get the pre-established intent to use a gps service.

Basically get noticed with the Tom-Tom(more likely because of pre-established intent) and then come up with an app for other devices. Or like I suggest a browser based app( I don't know if this is currently possible, but am sure it will happen soon)
What kind of presentation? I would strongly recommend LaTeX-based stuff (specifically, powerdot), but my presentations tend to involve quite a bit of mathematics...
There's also pyjs if you want to skip the writing of javascript and just write python. It works like gwt, but in python. http://pyjs.org/
I'm not sure any decent Java developers would encourage starting a new project in Java anymore. This is exactly the sort of thing that Scala is just as good at.

Scala isn't as succinct, of course, but it gets much closer!
For awhile I had a bookmarklet as my homepage which would load a random page. Then it brought up a VERY inappropriate page (some weird Japanese fetish article) in front of inappropriate people.

Since then, no more random Wikipedia for me.
The idea isn't to point them out, but to expose them without directly pointing them out.

The article's author has a different idea:

Besides, let's be honest: debate is not just about finding truth, it's also about winning. If you think a fallacious argument can slide by and persuade the judge to vote for you, you're going to make it, right? The trick is not getting caught.
When you ask about a dependency analysis tool, are you asking if the tool can automatically prune libraries that are no longer needed?

That's a general problem of identifying dead code. Of course if you leave the if/else clause in the code, no tool can help you.
There's going to be code, only JS and Ruby though. I'd rather not have to learn latex for this to be honest. I just need simple slides, with code, and maybe a picture or two.

Perhaps I'm over thinking this and should just use Google docs.
I'd be happy to be mars settler... but where I should start?
The article is talking about a college debate, which has judges and rules, not a regular debate between people. The article also talks about how to point out the logical fallacy in a way that gets you the most points for it (which in some cases involves pointing it out directly, Latin and all, and in some cases doesn't).
welcome to the club!
If you ignore the fact that this page is a bit biased towards python, it is a pretty good intro to Python if you're coming from a C++ or Java background: http://dirtsimple.org/2004/12/python-is-not-java.html

My personal experience is that the Java-ish languages encourage you to overthink problems a bit. Instead, I suggest that you just do what comes naturally. This will actually get you pretty far, as Python doesn't have that many gotchas (at least in comparison to Java or especially C++).
My first thought is that this should be managed using a Factory pattern. If one is truly doing A/B testing, then this is manageable for N = 2, and a lot of repeated conditional code with the same if-then-else statement will disappear.

If they are A/B testing a lot of things, then this can get unmanageable. For that, how about a collection of functions? (methods? I am not trying to be language-specific at all here.) Have a facade which stores references to the actual functions. This is much easier if your application is structured in a functional or nearly-functional way.

Writing 100 if-then-else statements without making a single error is doable. But making the conditional logic disappear and just having to manage the methods themselves and a configuration is much easier.
What do you know others will pay for, that does not exist?

This is especially important. Don't just try to solve an arbitrary 'problem', think about people that you're around often, what they do, what they complain about. These will be your first testers / potential customers, and you'll need them to keep you working towards solving something that actually needs to be solved.
This is really interesting that most of the countries are on the list because of currency trends. Due to the weakening of the dollar or strengthening of the yen. Most of the top 10 comprises of Japanese cities and US has only one city in there. Goes to show how weak dollar has become
Well of course I'm doing it wrong, I got crashers during execution :)

I understand the concept, but sometimes in a medium-size project, you just accidentally send the wrong object back. It happens. But Python won't tell you, and it'll blithely wait for the code to get exercised before dying. I don't remember exactly why I was having this problem, but the bug wasn't shallow, and required a certain confluence of exceptions to occur before it would fire. The sort of thing that would even escape most unit testing.

I would never force static typing on Python or Ruby or upon any language that didn't want it, and when I switched to Python I was very pleased with dynamic typing. However, I find myself much happier with the stronger compiler checks. Writing a medium project in Python now frays my nerves!
Can I have the link of the bookmarklet. And for the record I didn't ask for it for the fetish article.
Hm, I didn't mean to argue against all type checks, just the flavor of static typing as described by the OP (i.e., Java). I don't consider Haskell's type system "rigid"; it's strict as hell, but it's also very expressive.

Either way, both flavors of static typing require development methods that are very different from Python's, though. My original point was that in Python, you shouldn't really have to worry about types, or checking them (in tests or otherwise). You can, but (IMHO) you'd be going against the grain of the language.
Foursquare Trends