If it makes you feel any better, my biggest worry about this site is the opposite: that the median awesomeness is decreasing as the number of users increases.
If you want to feel less overwhelmed, try reading the comments starting at the bottom of the page instead of the top.
But back to HN. Recall that people post here, in part, to feel good about themselves and appear smart to others. It may be that the real heroes are not here. They are off doing stuff, not yammering about it.
I've been lucky enough to meet a lot of successful web startup people (a different group from say, pg or other YC alumni). I can tell you that the only thing they have in common is that they Keep Doing Stuff. No matter what, Keep Doing Stuff. They often have very low tolerance for naysayers and armchair critics. This isn't so much iron determination (well it is, in part) but mostly because they are motivated by the intrinsic rewards of building and exploring. In other words: they are just trying to have fun.
Their initial prototypes are ugly and naive. They don't care because it does something they wanted. They use a language that others deride as a toy. They don't care because it gets the job done fast. At launch, the whole thing is held together with tinkertoys and chewing gum. They still don't care as long as it's making people happy. Then scaling problems happen. Then they hunker down and make even more spectacular mistakes.
And you know what? Then one day they look back on at all they've done, and the system is humming beautifully and they're experts in multiple fields. And O'Reilly starts bugging them to write a book about how they did it all so effortlessly.
Meanwhile those guys on HN are still whining about how it would have been so much better with a functional language and a NoSQL data store.
P.S. This is not an argument for doing anything sloppily. It's just that you have to be laser-focused on results. It's a paradox; you have to be capable of rolling out something of heart-breaking beauty but also have no concern for things that ultimately don't affect success. It's been my experience that the version 1.0 of anything really creative looks like a piece of junk. And it takes a very sharp eye to see that it's doing something new and important. I guess this is why not everybody is a successful investor.
You're doing something about it. This is fantastic. If you want, email me a reasonably short email and tell me what your goals and projects are, I'll recommend you some reading and give you some advice. Spend 5-10 minutes thinking about your core life goals before writing me, and feel free to put in a couple specific projects as well. I'd be happy to be of service, I admire people who confront themselves and reality.
I love when I get that sick to my stomach feeling, it means I'm about to do some great things. Don't fight it. Drop me a line if you like, my email is in my profile.
But you've taken the wrong lessons out of it. Don't view it as a community of people better and smarter than you, see it as a wealth of knowledge like a library.
Don't view the people here as your competition. View them as people with something to teach you.
Intelligence is not a zero-sum game. No one will prevent your success because they are "smarter" than you. The more educated, energized, and ethical people in the world, the better for us all. Take what HN has to offer and apply it to what makes you happy and what will bring you fulfillment and success.
The net lets us see all the great output from the most talented writers, thinkers, doers of their fields -- including people who we could imagine to be our peer group. But what we see is not an accurate sample -- it's dominated by the most remarkable, outliers by both skill and luck. (That is, there's massive survivorship bias; see Taleb's Fooled by Randomness.) Still, if we choose to look, it's in our face every hour of every day, in our news feeds, our Twitter streams, our Facebook statuses.
(Compare also: the quality of social networks whereby for almost everyone, your friends will have more friends than you ; the Matthew Effect, whereby small changes in initial endowment of power/fame/success can compound ; and how viewing top athletes can actually decrease someone's coordination in following challenges .)
In the plant and insect world, sometimes as one organism thrives, it sends off chemical signals that suppress the growth of its siblings/peers/neighbors, in an effect called allelopathy.
Information about others' great works and successes, transmitted by the net, may sometimes serve as a sort of memetic negative allelopathy. The message is: this territory is taken; you can't reach the sunshine here; try another place/strategy (or even just wither so your distant relatives can thrive). This can be be the subtext even if that's not the conscious intent of those relaying the information. Indeed, the reports may be intended as motivational, and sometimes be, while at other times being discouraging.
What to do? Not yet certain, but awareness that this mechanism is in play may help. You can recognize that what you're reading is not representative, and that comparing yourself against prominent outliers -- or even worse, vague composites of outliers who are each the best in one dimension -- is unrealistic and mentally unhealthy.
Actual progress for yourself may require detaching from the firehose a bit, picking a narrower focus. (HN's eclectic topic matter can be inherently defocusing.)
And remind yourself that despite various reptilian-hindbrain impulses, most interesting creative activity today is far from zero-sum. The outliers can win, and you can win too (even if you don't achieve outlier-sized success). Their success can expand your options, and they may wind up being your collaborators (formally or informally by simply participating in a mutual superstructure) moreso than your 'competitors'.
 Can't find the reference at the moment, but the study I recall showed people video of a top soccer player, and subsequently they performed worse on tasks requiring physical coordination.
I mean, yeah, it's hard. When I was 20, I got an opportunity to work with some of the best people in my business. (I got the guy who hired me to write a preface to my book... In it, he calls me a 'dumbass kid' which pretty much sums up the situation.)
I did okay at the job until the company crashed (In about 2001, you see) as the pressure went up, I couldn't deal with it. I felt like I was not remotely qualified to work there, or really in the industry at all, and that I was the reason why the company was doing so poorly. I ended up quitting, and taking several months off to road trip. This, of course, ended when I ran out of money, and when I found that working at a coffee shop was more likely to require a degree, it seemed, than getting another SysAdmin gig. I ended up getting a job at a local ASP, and not doing any thing else notable until I started my own company a few years later.
In retrospect, I handled the situation all wrong. The company survived, and if I toughed it out, I would probably be another 3 years ahead in my career right now, and I'd be much closer to the incredibly awesome contacts I made there.
But, the point is, there are always going to be people who are better than you are, and if you can work around those people, do so. you will learn a lot. On the other hand, going from a small pond where you get to be the big fish to the big pond, where there will always be people with whom you simply will never be able to compete, is, well, quite an emotional shock.
If you are a healthy person, you will eventually come to accept and appreciate people who are better than you without getting the feeling that your ego just got kicked in the nads. On the other hand, if this is your first 'big pond' experience, the blow to the ego is very common and generally something that should be expected. You can get over it.
Or in general, really. Not just on HN. Learning and asking questions isn't something that should be scary.
As for your three points:
My personal belief is that you have to like what you do to be good at it. And people like to talk about things they like. So, don't be surprised if someone is willing to talk to you about your question :)
2. I don't mean to be harsh, but it sounds like the only thing stopping you from having a bunch of neat ideas to show off is, well, you. It sounds like you've started a few ideas. Why not finish them up as well?
A very good friend of mine is fond of saying (something along the lines of): "If you pretend to be something long enough, you'll eventually find that you've become what you were pretending to be." If you have 80% done (or even 50%), thats a start. Keep going and you'll wind up with something to show for it. Then you'll find that you've turned into one of those people that you aspired to be like.
3. Everyone had to start somewhere. Some people started earlier and others later. Some people can pick certain things up quicker than others. Thats no reason to be so harsh on yourself. And not everyone is working on the same idea.
And even within the same idea, there's always going to be plenty of room for multiple companies. YC has funded companies in the same area before. There's hundreds of Twitter clients out there. Don't ever let "Well, someone else is doing this..." stop you.
The "real world" is packed with people who will belittle and disregard your achievements and abilities, you will be told again and again that people like you will simply be replaced by counterparts in a third world country willing to do what you do for sixteen hours a day at five dollars per hour. This comes from fear and ignorance but is so universal amongst the general populace that you can start wondering if they might be onto something.
A community like this is concrete evidence that they are dead wrong; That what we do matters, and that it is not wrong to take pleasure and pride in it. It betrays the attempts to sideline the work and misdirect attention to the importance of politics and salesmanship, neither of which have any spoils to be arguing over or peddling respectively in the absence of the essential process of making wealth and not just money.
Most of all it makes me not hate the world like I used to, because it shows me what humans can be and not what they seem to be when I stand in a random room in meatspace and take a look around.
Read both in their entirety.
You will gain a new perspective on those who make great achievements. They experience the same self-doubt you do! Feynman notes in dismay that other researchers at Los Alamos effortlessly solved problems mentally after he'd spend days working out the solution. He also mentions when he starts in academia, he was overwhelmed by an academic paper being discussed at a conference because he didn't understand it. Richard Hamming notes a few extra pressures, specifically the pressure to solve great problems instead of small problems, and how this pressure ruins your work
Both books have similar lessons. Feynman says it implicitly, and Hamming says it explicitly: Keep modern, work with others, understand the twists and turns of your field, think about the future, and solve the small problems. You can't force yourself to do great things, but you can stack the deck in your favor.
Sounds like you're suffering the grown-up version of that. You're worried about the "smart" label and not the, say, persistence, hard-worker, stick-to-it label.
If you are interested in finishing something, I highly recommend read the posts on http://www.justfuckingship.com/ - you'll probably find them right up your alley.
Take heart, by the way. Finishing and shipping is a skill, like any other, you have to do it a lot to get good at it, but it's totally learnable. As is entrepreneurship.
Oh, and take all these people here as a challenge, not a reason. You aren't competing with them. You're the only person who will ever be "you." Let their accomplishments at being the best of who they can be inspire you to be the best of who you can be.
Sounds a little woo, but it works.
That said, what I learned over time was that the best way to make yourself smarter was to hang around people smarter and/or more experienced than you are. The hallmark of truly intelligent people is their ability to recognize they don't know everything. If you do this and you make an effort to learn and build your skills, some day you wake up and realize you are an "expert" in some area you have worked in for 10 years.
I worked with a very talented programmer a lot early in my career. One time I was feeling down about ever being able to code like him. He looked at me and said, "You know, I wasn't born knowing this stuff." I hear his voice every time I get discouraged.
I suspect the reason why you do this is because you give your "talent" more value than you should.
You wrote this:
> HN shows me all these people and ideas that are succeeding. It used to be inspirational, but now it's frightening.
> I've always been told I'm a smart kid, and that I'll be a millionaire some day, and all of that shit.
You can snap out of it, but you need to change your mindset about intelligence, learning, and mastering a trade.
Please consider reading this essay of mine. I think it may be helpful: http://programmingzen.com/2010/07/04/the-pursuit-of-excellen...
EDIT: People are getting hung up on the specifics here, so let me expand a bit: If you are, say, the 20th best at anything then how you feel about yourself depends on where you look. If you only look forward you'll be thinking "good greif, there are NINETEEN people in front of me, I suck!". If you only look behind you'll think you're the greatest. Just look at all the billions behind you.
I think the key is a healthy combination of looking forward for motivation ("Just 19 more to go!") and behind for perspective.
Realize that it also doesn't really matter, as long as your code is good, you can code on Win98 for all I care.
2) In my mind, smart is worth zero. Motivation is everything. (And I'm telling myself that as much as I'm telling you.)
What are your ideas? Better yet, what are your ideas that you could do overnight? Do one a week! Realize that there's very much a survivor bias - you don't pause to consider the ideas that you never heard of that went anywhere because, well, you never heard of them.
It's frightening and inspirational, but take it as motivation to stop standing still!
3) Well done on a successful posting. You've written a navel-gazing AskHN post that got you 200+ karma. (Read: the community has given you a good amount of karma, a community-based metric of how much something belongs to said community, and it was for your thoughts (as opposed to posting the latest TechCrunch/Wired/Ars/etc post from the rss feed before someone else got to it).)
So you're working on a startup, and, despite your convictions that it's the right thing, the best thing to do, there's will always be an air of uncertainty. An unproven business plan, a failed-before business model, a different pricing structure, a questionably useful product; some question with no right answer. A competitor in a similar market is great! It validates some part of your startup. You should relish competition, from this crowd specifically, because it means YOUR idea is a GOOD one that someone else who isn't you has decided to pursue it in a serious fashion. (That said, leave my customers alone :p )
Yes, I do get overwhelmed occasionally that others are doing better than I, but that should be motivation to do better, do more. I frequently find myself thinking "Psh, that app is so lame, I could do better in my sleep." To which my retort is "Sure, but what did you do last night? Sleep? ...yeah".
Do the idea that you have floating around, write down what your MVP is, cut that down to a proof of concept that you could finish the engineering essence of in a day and do that. Stop feeling overwhelmed and get to work. Feel guilty for not working as hard as you could on everything, and work harder. While you're working harder, define your own tiny metric of initial success... If only one person visits, if only 1 persons reads this, if only. Be happy with what you have, but work hard to do even better.
You're 25 - you can't know everything.
You can do some stuff - get on and do it.
You come here and find people who know more than you do - learn from them.
Don't be over-whelmed - everyone here has their weaknesses, it's just that you usually don't get to see them.
And I belive its true, most Successful guys are just "lucky" (paraphrasing Sarah Lacy's book "Once you are Lucky, twice you are good") so there is no point in comparing yourself to them, you should use them as inspiration and not exacly as role models.
For example, I really liked this Dustin Moskowitz (Facebook co-founder) answer when asked about the Social Network Movie:
"It is interesting to see my past rewritten in a way that emphasizes things that didn't matter [...] A lot of exciting things happened in 2004, but mostly we just worked a lot and stressed out about things"
So at my 27 years old, I may not be Mark Zuckerberg or even the more cooler and loved Matt Mullenweg, but I know that reading about them and how they think make me think different too; that somehow by entreprenurship there is a way to change this world and though it's really hard, I know that now I can't stop trying.
1) Learn by doing and trying, not by thinking. Aimless reflection and introspection are bottomless pits that can suck up enormous amount of time that could be put to far more productive uses. If you have a choice between reading a book on a programming language and going through a tutorial that forces you to try examples, go through the tutorial. Immediate, tactile learning is better than abstract success stories which paper over important ingredients for success.
2) Social networking is key. Grow by connecting yourself to communities of peers, mentors, gurus, etc that you can actually rely on and that you can benefit from. If HN is making you depressed, stop reading it. Instead establish meaningful professional and personal connections with people that are supportive. The value of your circle is often overlooked. I am a firm believer that the quality of the people you know is the great predictor of your overall happiness and achievement.
3) Focus on the things you need to know. The number of programming languages you know doesn't matter. It is a meaningless metric. What matters is how comfortable you are with the tools that help you get _your_ job done. This is related to point 1). Having mastery and proficiency of something that you use daily is far more important than having the breadth of knowledge and mastery of exotic languages.
4) Stack your skills. Time is short so the best way to advance is to leverage maximum of what you _already_ know. In other words, don't jump around and shift gears all the time. Think of a long term goal(s) and try to segment the path toward that goal such that you can (a) complete each segment without getting distracted, (b) get feedback after each segment (c) learn something in each segment that you can use in the next. It doesn't have to be one project. In fact it's better if a sequence of projects, so you can adjust your course along the way.
5) Don't stop. Giving up is an attractive option. Our society has many different ways to cushion your fall, which can make quitting tempting and virtually painless. If you want to achieve something, idleness is definitely _not ok_.
Update: edited for style and grammar.
Once I started seeing things in that way, it became really exciting to find so many people, much more intelligent and talented than me. I can learn from them, hire them, partner with them, work for them or even compete with them. I can leverage (for lack of a better word) their awesomeness in some way or the other for a goal higher than just personal achievements.
Also there are people that have been in the area a lot longer, so me being 21 wasn't around programming during the late 90's tech bubble or before. They have had a lot more time to try a lot of different things.
It's good though to have the median above your own level, allowing you to learn but faster then if you were one of the smartest people here.
That's all. It's just about doing things. In many of these cases, you've chosen not to do these things. So you only really know three languages? Has somebody threatened to shoot you if you learn Ruby?
Most of your supposed "inferiority" is just the fact that they've chosen to do some work and you haven't.
I used to stress over never being able to contribute to OSS projects because I felt like I was drowning when I tried to, and a bunch of other stuff.
Give it time, keep hacking, and you'll be contributing amongst a field of your peers before you realize it :)
I really suggest reading "Nonviolent Communication" (http://www.amazon.com/Nonviolent-Communication-Language-Mars...), which gives a lot of insight on these topics.
Learning is easier than product creation, IMHO. A product involves an ongoing dialogue with a customer of some kind(even if it's free), while a skill is just something you have and can demonstrate every so often, so you can go at your own pace and not worry so much about "the guy at the other end."
The only thing bad about learning is when you hit a peak so high that you run out of other people at or above your level to talk with. It's an incredibly lonely feeling.
My point is this: don't get discouraged by all the great stuff you see on HN, thinking that you don't have your best years ahead of you. You can be as articulate, and insightful, and successful as many of the people you admire here.
It took me about a year to realize that his blogs are collectively almost a decade of work by him, his collective wisdom and insight, which wasn't even started until he had been out of college for at least 5 years. I was getting a compressed version of his long-term work.
Like robryan says in another comment: the collective knowledge of HN is vast and deep indeed, but most of these people have been hacking for years or decades. Just keep at it, and try to realize that creating useful things is not a zero-sum game.
This was the top answer, by Paul Tomblin:
"The secret to happiness as a developer is not to know everything, but to be prepared to learn a lot about a particular niche. I don't know the answers to 90% of the questions here, but I do pretty well with the ones I do know. (And I've been a developer for 25+ years)
"And then some day, you'll be like me, nearly 50 years old, and looking at all these questions and think "am I too old to learn all this new stuff?" In my case, I snap out of that funk by assigning myself a new side project involving a new technology. Last time I felt this way, I learned Perl and built some web sites using Fast::CGI. This time I'm doing an iPhone application."
I've also found that talking to others about your ideas that may not totally understand the tech world and explaining to them in terms they'll understand will help in boosting morale. Often times, people will see with fresh eyes what others (such as those of us here) would overlook otherwise.
Each of these items has a clear next step. (1) Think about your projects, pick your favorite one, look at the code and do something minor. (2) Poke around and do some light research (if you haven't already) on other dev stacks, play around until you find yourself genuinely interested in one. (3) Install Ubuntu in a virtual machine (VirtualBox is free and works well) or dual boot. Google vim and emacs and pick one to start playing with.
If you feel like you are falling behind you can use that as an opportunity to figure out what you're unhappy with specifically and do simple things to take a small step forward. You can't do everything all at once, and the people here that are impressive to the point of it being intimidating got where they are by diligently making incremental progress over some time.
I've had a lot of successes (and failures) in my life. Some I've earned with a lot of hard work and failed attempts, and some just came from my "natural talent and ability" (that's a load of BS by the way). Can you guess which successes were far and away the most satisfying? Hint: it's the successes I had to kill myself trying to get.
Moral of the story? Don't ever feel bad when you recognize a difficult path lay in front of you. Don't feel bad when you see room for improvement in yourself. You have direction and purpose. And when you get there, the reward will be that much more satisfying for it.
You have a shot at success if you work hard for it. You have a shot at success and happiness if you work really hard for it.
If you can't do it in the real world because of your geography or the quality of your physical peers, Hacker news is the best place to hang around, particularly if you're a comput(er/ing) enthusiast.
The wonderful thing about the hacker community and especially ycombinator is the openness and mutual support we offer each other. We create, and we create more with other people. And rather than fighting over what's there we just make more.
So your best bet is to identify your place and roll in this community. Understanding other facets of the R&D economy can only help you, but use this knowledge to figure out how you can contribute the most. The other people here are not your competitors, they are your friends, employers, employees, and colleagues. They raise the bar on you but give you a way to get there-- they're the most important people in the world.
Hey, you're just 25, try and relax a little.
if you want to balance this feeling why don't you watch some reality shows? I do watch a couple of hours of them each 6 months, it really helps.
There are 7 billion people in the world. For nearly all these people, for every skill they have, there is someone else better than them at it. I suggest you not worry about it. You probably aren't the best in the world at anything; you probably nevertheless are capable of making important contributions to things.
1) I am fascinated by the stuff programmers do. I do not program, have tried to learn, but I am impatient. I will never code, so I feel like shit.
2) I see info on some real cool startups, and think I will never be involved in one. I do not have any great ideas, do not know any smart, cool people and can kiss that experience goodbye.
3) I am in IT, but it is at the Class A level, not the major leagues. I feel I will be stuck in the helpdesk forever, and it scares me.
So I feel like sh#t every day, because I read HN everyday. But when I do not read it, I forget about it and feel better. Well, maybe it is the porn sites I visit that make me fell better.
Don't compare yourself to the masses. Seeing so much awesomeness can be overwhelming, but you're just one person, after all.
I'm having some trouble with a project of my own, because it's such new ground for me. Reading HN can be a little scary, because it does seem like these people are doing something I'm not. Well, I can't say it's not true, but Rome wasn't built in a day.
(Also, can I just say how weird it feels to give advice? I hardly feel like I'm qualified! I figure you might get something out of it, though, and I've always liked Wikipedia's "Be bold" sentiment.)
For me it's a pleasure to see so many people doing awesome things, cause it implies I can too.
To put some numbers behind it, having an IQ greater than 120 does nothing to improve someones chances of winning a Nobel prize. I think it's the same thing here, it's a matter of just choosing something to work on.
On the contrary, I feel rather inspired by the audience of Hacker News. Reading stories about how people have done it, the mistakes they've learnt and their advice has given me renewed confidence in myself to go out and do it. Typically people who are successful are normally those we see on tv but reading the success stories and just how brilliant people there are on here, it's a true inspiration. HN is probably my most favourite place on the web hands down. Thanks to all of you! It keeps me humbled - never ever think that I am fantastic at something or even if I am, there are other people out there that can do just as well and I should never ever brag or boast about it. HN keeps me grounded and keeps me driving. I love it.
Q. What do they call the guy who graduated last at medical school?A. Doctor.
Don't discount what you can achieve. It may be intellegence, inspiration, persperation, or luck. At last weeks RubyMidwest, the last lecture of the weekend was a guy who just started taking on new challenges and went from working as a kitchen staff to being a independent contract developer. He did it by pushing his own limit in small bits. If you are just doing the same thing every day, you aren't building skill or learning. Find something that makes you uncomfortable and do it.
2) You are young; not everyone here is as young as you are. Some of the people you see as rivaling yourself could in fact be your elders, who are naturally a step ahead of you, and whose place you will assume in the future
3) Big fish. Little pond. Happens to me all the damn time. Fortunately I realized a while back anytime I find I'm the big fish, that means it's time for me to get out of my little pond and find the really big fish.
60k unique visitors does sound like a lot, but it's not a drop in the hat of the amount of people that read Reddit or Digg or TechCrunch. So in a way, I actually feel good about this being a site that is smaller and more focused than those other ones, which really are the true depressants, so to say. Nobody on HN is out here to flame anyone, and most of them are thoughtful, intelligent people -- the kind I want to be with.
What I'm trying to say is, if you find HN frightening, the world is beyond anything you can imagine. There are people who are smarter than you, work harder than you, in better/more happening places than you, and naturally more rewarded than you. So then, being on HN gives me some comfort in knowing that there are people who are sort of like me, and who are also navigating the same world I am. Instead of comparing myself to these people, I'm just glad that they exist.
It's worth reading this recent thread and the comments.http://www.reddit.com/r/AskReddit/comments/crywg/dear_reddit...
The post is entitled 'Dear reddit, did you believe that one day you'd all be millionaires, rockstars and moviestars?' - taken from the quote in Fight Club. It raises some interesting points about how we are brought up to believe the dream is achievable and often it takes a lot more hard work than we originally perceive.
I personally wouldn't compare myself to anyone else. I've worked with some of the smartest guys I know from a technical point of view, but they have lacked in other areas such as ideas and execution.
(Often the best technical people neglect important things like marketing, design and user experience - expecting the 'amazing product' to equal success).
You talk about talent and intelligence - both important. But I've learnt that most people - 90% - never actually try. They talk like they want to succeed, but deep down they don't. They won't quit their contractor job. They won't even try. What kind of life is that?
But I also don't have a strictly CS background. I generally try not to express myself negatively though, but instead value the good parts and recognize that YC/HN is what it is.
I'm curious though; how do you feel now that you've gotten the communities feedback on the matter?
I'm also wondering if this is something that others are interested in knowing.
1) they are older than you, or put more time in than you, thereby had more time to learn success systems, gain experience and accomplish things.
2) they are acquiring wisdom and success in various aspects of their lives and leveraging those wins in the business arena.
Start moving in different directions and get some easy wins wherever you can find them. These wins may seen small to you but be an Everest for someone else. Also, recalibrate what success and talent mean to you. Explore different definitions of it. Your perception of yourself and the HN community may not be the most accurate one.
Most important of all, seek out wisdom. A lot of what you think is relevant is only relative and transitory.
I've personally explored the topic before and wrote Three Steps To Obtaining (More) Wisdom: http://zerotosuperhero.posterous.com/3-steps-to-obtaining-mo...
I'll add that you need to remember there is probably a difference in age between yourself and that of the person (experience and thus knowledge is partly a function of age of course) who posted some mind-blowingly interesting and esoteric bit of information (I'm regularly amazed by the broad range of knowledge by the HNers)
I wonder if that maybe helps add to...like subconsciously, all the comments appear the same so you start feeling like HN is this big thing that 'knows everything' without realizing how many different people are contributing their knowledge of whatever area.
HN and PG's essays are the best things that a student / aspiring entrepreneur could experience. I learn new stuff everyday. HN rocks.
Please come to the video game industry :) There is always need of someone that knows MySQL, LAMP, etc.
Does your perceived lack of talent drive you to learn and become better? Are you actively looking for opportunities and inspiration to drive you forward? Or are you simply idling on a web page re-living other people's accomplishments?
It's a thin, dangerous line. Some people idle, some people drive forward. I wouldn't suggest that either is the 'right' thing to do (I think it's morally ambiguous) but my desire is to drive.
At one time I was working for a company where we were constantly developing new systems for clients ranging from websites to large scale corporate applications. It seemed that we were learning new languages and systems every month and working on all sorts of platforms. It was hard work, but it was also a great deal of fun.
The last few years I’ve been spending about 90% of my time developing embedded software and very rarely use any languages beyond C, C++ and Assembly.
I try to read up on the latest developments as much as I can but I do often think that I’m falling further and further behind the older I get :)
I keep saying, it can't be that difficult, but just don't get it when I try!
Since I found HN, 6 months ago, I have spoke to some great people, been given very good advise. I have even started a project with iPhone app using outsourced developers but it's slow (try telling a Latvian how to orient a photo depening on type). I long to be a great programmer, I would love to have even LAMP skills (could do with your talent, get in touch if you want to work together).
One thing I do know, I'll make it, why? Cos all the cool talented talented programmers here reply.
Sometimes I feel like I am an only alien in the middle of natives, but think about your school days. You didn't know everything you should know, if you had finished your grade.
I'm happy everday reading and learning any tiny bit of new things posted on HN. I hope someday I can comment more and even post my own writing.
This is why team-work is so important, because individually none of us can really hack it.
There is no single person that can be an expert in every area. But widening your views just beyond one simple tool/technology is always beneficial, and thats what I primarily read this site for. I read this site for the "aha" moments. Also consider the amount of people that don't care enough to even think about the subject you talk about. Just by wanting more your getting ahead of them.
The nice thing about being humble enough to admit it is that you can seek out people who are strong where you're weak and ask for help and advice in that area.
The goal is to develop a proper habits (of focusing and concentration) and increase self-esteem through them. Practice makes you "perfect".
Most of those people just started early and spent more time practicing. ^_^
(For example, in a beautiful simulation where a single program had to control a colony of ants who did not have any room for state other than a current instruction pointer and the input of their senses, someone successfully identified an algorithm to have each ant figure out which ant they were, and then execute a pre-planned sequence of moves to wall in the entire enemy base, faster than any non-degenerate program could possibly counteract it. It was beauty to behold but it also crushed the life out of the community -- the best ant has been crowned, everyone else gets to play for second best.
Interestingly the ultimate winning strategy was a herbivore that acted even more aggressively than a carnivore. Any carnivore that wantonly killed everything would also be wasting its food source, but a herbivore has no such limitation. Someone programmed herbivores that formed packs to attack everything & keep the plant for themselves, and it was impossible for anything else to gain a foothold once bugs with that strategy were in a terrarium.
It does have the problem of playability. How do you keep someone's interest beyond a week or two of this?
My thoughts on the subject have lead to something like this:
Create a fairly persistent world. This means that any action a player can make will be permanent in the game. It can be something fairly simple, a grid based game, maybe some resource management. I like the idea of a turn based strategy game, with ~30s per turn.
Create a point system. How points are won doesn't really matter, but make it something interesting. Point reset every week. When they reset, the person with the highest amount of points gets to make a new "rule". This could be anything from a new ability for a unit to a change in the way the physics work. It (obviously) has to be tested and verified, but would be deployed relatively quickly. This process iterates for as long as desired.
Obviously a number of iterations will cause problems of complexity eventually. My thoughts on the matter have led me to a rather specific idea for a game of this type, which I think would be incredibly enjoyable to play.
If you're interested, send me an email. I'd be happy to send you a more complete description of my idea, and if you still like it I'd be up for trying to implement it. That is true for anyone, not just the OP.
It would have to be turn based otherwise latency would make it veryunfair. Which of course would mean that efficiency wouldn't be part ofit much (there would have to be a timeout of course, but you stillwouldn't usually be able to get an advantage by optimising your codeto run really fast).
Having them run on other machines would also mean that collusion andsuch between bots would be a possibility if you had games with morethan two players. I think you'd just have to accept and embrace it.
I'm up for getting involved if you want to make this. Email is in my profile.
Possibly something like 30 seconds to 1 minute turns with allowing the server your querying maybe 5 seconds to return moves. Then you would just need some way to assess progress. I like the idea to the people can get beaten relatively fast, just the idea that everyone starts out on a massive map and bigger civilisations soon start to form by wiping others out.
I would definitely play an MMO which let me script and didn't require my realtime involvement. EVE Online is like that for some of the gameplay already, but something where everything is through "agents" would be even better.
http://metavore.org/faff/Botlife.txt is the sketch of what I came up with there.
The main novel aspect would be that it is essentially an MMO, but there is no direct control ability; you can only upload new programs to your robots.
Closer to realtime too (rather than a huge multiple) - which would make close to 24x7 interaction necessary, requiring automation, teamwork, mobile device interfaces....
Damn - yet another project to think about :-)
Edit: I've just noticed that they are trying to encourage the development of nuclear war fighting bots within Defcon.
You would write all the logic of your car in a single C program and then race it against others. It had a visual so you could watch the race or just see the results. At the time I thought the physics engine was pretty realistic, not sure what I would think if I went back to it now though. It was a blast to play with friends.
I know WeeWar has an API, but that is probably not the kind of game you have in mind. I think you mean long running simulations with agents trying to survive.
There might even be one by Microsoft, not sure if they are language agnostic, though.
I think there is still room for interesting worlds of that kind.
If you limit the number of API calls per minute to something reasonable, should be scalable, too.
You can't battle your Java AI against your C# or Python AI
Don't shy away from the ones that call you out, at least if they are giving you friendly pokes rather than being mean. The way I talk (in casual settings), I grew to like saying stuff like "What?!? Really?!? Oh!. I'm full of s--- then!" The value of these people is that they help you learn to recognize the internal cues of when you might be going off the rails. They can probably sense it in your voice tone and body language before you even get the bogus content fully out. You can learn to recognize that in yourself.
Do watch out if you're one of those (like many of us) who likes to talk a lot about stuff we "know" and likes to talk excitedly and at length. Watch some old cowboy movies that feature smart, strong silent-type heroes. If you don't have one already, buy yourself a cowboy hat as a personal reminder. (Substitute any similar character type for "cowboy" - your style choices are yours.) If you feel like you just have to say every clever thing that pops into your head in a conversation, work on not doing that - even for topics about which your knowledge is definitely good. (As a side effect, this makes conversations more interesting.)
Careful if, like many of us, you find it friendly and fun to tell people "Hah, no, you're wrong there! Let me tell you...." Among some geeks/nerds, that really is fun and playful. Among many people, it's not. It's also one of the leading causes of spouting bogosity, studies have shown.
Remember that its just human nature, nothing new. What was it Mark Twain said? Something like "It ain't what you don't know that gets you into trouble but what you know that just ain't so." Something like that, anyway. Close enough.
> What I fear is looking incredible.
I'd rather that you fear being incredible (which it appears you are).
A resource that helped me think much more precisely about what I know and the level of confidence I have in that is the rationalist writings of Eliezer Yudkowsky. You might like to check out the sequences: http://wiki.lesswrong.com/wiki/Sequences
When what you know differs from what is real, you have a problem where your mental map does not match the actual territory. The most important sequence, Map And Territory, addresses that: http://wiki.lesswrong.com/wiki/Map_and_Territory_%28sequence...
I also recommend to you the Reductionism sequence: http://wiki.lesswrong.com/wiki/Reductionism_%28sequence%29
How often do you say "I don't know"? I think Voltaire was on to something when he wrote: "He must be very ignorant, for he answers every question he is asked."
As a nobody I think that the biggest sign people are venturing into areas where they don't know what the hell they are talking about is when they start using buzz words, technical terms and oft quoted stuff a lot. I think that when people have thought a lot about something, or truly understood it they tend to talk about it in their own words, and they don't talk about terms or something arcane but concepts behind them. They take into context things that just aren't at the surface, and then base their conversation on that.
This isn't a hard and fast rule though. As it varies with a lot of people, but it is really useful for me as I have to turn to 3rd party sources to learn stuff pretty often (a textbook or a teacher is a first and second part resource. You know if you can trust them or not. Online help sources whereas are another game altogether).
Not sure what else to tell you. If you're passing off knowledge you pulled out your ass and are getting called on it, maybe you shouldn't do that. If it's speculation or if you're trying to be helpful but don't know for sure, then phrase it that way. Or if you can't take the criticism just keep your nose out of it.
I don't understand where the disconnect is to be honest.
Don't say anything unless you're fairly sure of it. If you're not omniscient, you just don't end up saying much. ... the trick is to pay careful attention to how you qualify what you say.
The other aspect of this is to dig deeper into subjects. People think they know something about a topic because they read a couple of blog posts. Dig deeper- look at primary sources. Look at citations. If there aren't citations the statement is suspect, and you will qualify the knowledge as suspect when it comes into your brain, increasing your chances of qualifying when it comes out of your mouth.
Second, it's sometimes really hard to know. The best advice is to avoid speaking with absolute authority, unless you have evidence in hand to back up your shit. Even the experts get tripped up occasionally.
I guess my advice boils down to this: embrace being corrected because it means your knowledge has just been expanded, and approach all topics with a modicum of humility.
Of course, to do that, you need to have an open mind and always act on the safe side. Instead of saying: "You stupid idiot, haskell is not purely functional because there are monads", you're better with "I'm pretty sure haskell..." or "I think Haskell..". This way, you encourage people that might know more than you in that subject to speak and help you instead of aggressively attacking them.
There's nothing wrong in being wrong. And to be honest, I think it's the only way to learn :o
I would suggest trying to a) listen and b) gauge the level of experience of the other guys in the conversation. If they have 'doing' knowledge that automatically trumps your 'I read on the internet' knowledge so, yknow, silence is golden - everyone has access to google...
Way easier than to second guess yourself every turn.
In startups we talk about failure as an important part of the learning experience, so it applies to life in general too.
If yes, are the things you get called out on stuff you had previously categorized as stuff you "know"? If so, you need to think on the distinction between the two.
If not, then, what I do is this: If I know something to be correct I am happy to assert it. If I only believe it to be the case, I will caveat it with something like "It is my current understanding that..." and make it clear that I am not the font of all knowledge on the subject, and others may have a more informed opinion.
You can mentally prefix this whole answer with a "It is my current understanding that.."
What do you think of the opinion many people have..which is Do cats always land on their feet...even when they've been buttered e.t.c.
Founder At Work is really really useful. It is startup biable. If you read it then surely you will get inspired http://www.foundersatwork.com/
However, I think my biggest issue is in the diverse or lack of focus of the site.
Sharing content, and collaborating on ideas is two different things. There are TONS of ways to share content. Digg, Facebook, Twitter, HN, etc. Where does this fit into the picture?
Note that when PG created HN, he didn't just make a space to share any content, it had a focus. Is there a niche collabrr should be targetting?
then there is the 'collaborate ideas', again very broad, which is good for some things, but to collaborate on ideas I think requires some domain knowledge of those ideas. Is there any site today where people collaborate on any random idea.
Do I go to collabrr because I want to collaborate? Or do I go there to discover content? Maybe it's a messaging thing that I'm not getting. At HN, Digg, Reddit,etc. you discover and discuss. You don't collaborate.
So how is this site enabling people to collaborate?
* I can't figure out why I would use this rather than Reddit, Hacker News, Digg, or one of the various StackOverflow sites.
* "You cannot collabrr at this time" Just call it posting already.
* Links on one page are the same color as non-links on a different page.
* I find the interface in general to be clunky
* I'm not sure what you mean by "drag" content during post creation. It didn't work for me in Google Chrome at all.
2. "Interact with others" is an incredibly non-descriptive slogan, call it "Realtime Digg" instead. I don't 'get it' soon enough. Visitors should see what this is and why it is awesome for them, within 10 seconds.
3. Entices me to start chatting, but then dissapoints me by saying I need to login first. I suggest you remove the login requirement for chatting.
Looks like an interesting concept, just needs a little more polished execution.
Also, how does it deal with spam/abuse/hate speech, etc?
And if it's a start-up, how is going to make money? (I assume ads, so where will it be getting users from?)
I assume it's like any other call market with price (odds) and time precedence, but I'm still curious.
Sorry if this is too business and non-HN oriented. I will remove this question, if requested.
Sudoku solver: http://norvig.com/sudoku.html
Spelling corrector: http://norvig.com/spell-correct.html
A lot of the "how" is meeting security wickets (physical, application, transport, audit, examination).
If 250k for to last you 1 year (12 months) =~ 21k /monthor 4 medium business accounts or 40 small biz accounts.
If there was some product adoption like you hint at, I can't see why you would be asking for such a small amount of money.
I feel like you're hiding something... "Everyone who knows about the product thinks it's absolutely amazing." and "I do have paying customers"... so where is the money? Is your pricing/business model flawed and you've had some people try it really cheap but not willing to pay those advertised prices?
Another issue I see is "Customers who can understand it love it." Why don't others understand it? Looking at your site it wasn't exactly clear what it does. Does your mother understand it? How about your grandmother? If you can explain it to them, your target customers shouldn't be a problem.
So, make some telephone calls, and set up some appointments with VC/Angels in your local area. Try to avoid the instinct to deliver the pitch over the phone; just paint the picture in broad strokes, and try to get the meeting.
Seriously: what's the problem?
'Venture Hacks' is probably the best online 'how to raise money' resource.
Understand that the fear of rejection is just that: fear. It's part of the risk. Sometimes, rejection can be a damn good motivator.
I highly doubt that anyone would give you money and why $250,000? how will that accomplish anything? It just seems like a finger in a wind number. Refine your idea then refine it some more. You're getting high on your own idea.
Your website is really off-center when browsed in chrome, try looking at it at 1024 screen.
Set up a board of advisors for your company, and try to get 1-3 successful entrepreneurs in your field (or related fields) to serve on it. Give them a bit of equity. Talk to them individually, but also try to get them all in one room at least once.
You can reach potential advisors through networking events, through service providers like lawyers, and by just emailing them (repeatedly if necessary). You might want to start by hiring a lawyer or accountant who is connected in the community, and asking for help with intros.
Among other things, your board of advisors will help you understand the type of investor that makes sense for you. If you're trying to raise $250K to ramp a business up to a few million/yr, then odds are no one on Sand Hill Rd will be interested. But that doesn't mean it's a bad business -- you just have to look elsewhere for investment.
1) I'm generally more focused and efficient when I work since time is more scarce.
2) I'm more motivated now since I've got the little one depending on me. The instinct to provide for another is a powerful one.
Point being, get out of your day job and into freelancing first. Get to where you are working your 40hr week and another 40hr steady freelancing, this will allow you to build a nest egg while you are making the transition, then when you are getting 40hr a week freelancing and it is steady dump the day job, then start scaling your hours back freelancing until you meet an equilibrium of money to free-time to pursue projects.
The original advice comes because when you're young and single, you are without obligations, nothing to lose, able to take more risks, being naive (which can be good and bad), and being agile both location wise and time wise.
Said that, if you do have a family, I think that has a set of it's own advantages such forcing you to manage time better, likely to go after ventures that are more likely to succeed, and having a family behind you for support.
Personally, it does alter the level of risk I'm willing to take. Pre kids, I'd be willing to risk a lot more. Having kids makes me value my time which does force me to be focused. I'm willing to work long hours, but I split the time up. I work until 4-5 and spend time with the family. If there is work to be done, I'm back on after the kids are in bed. This could present a problem at some startups.
anti-family: - Jason Friedmanhttp://www.humbledmba.com/the-drag-coefficient-scoring-syste...
Pro-family: - Vivek Wadhwahttp://papers.ssrn.com/sol3/papers.cfm?abstract_id=1431263http://techcrunch.com/2009/09/07/when-it-comes-to-founding-s...
Hope you find these helpful. Good luck!
Maybe having people that depends on you makes you more responsible.
Another good example is also Chatroulette where users play games like Tilt your head, Play you a song, show you the bird, etc.
* Create a leaderboard for your 'cheerleaders' (ie. the most cheery people). * Let them send eachother virtual gifts. Make all but a few of them free.
* Automate the creation of 'sad' entries. (Just enough to make your 'cheerleaders' feel important, but not too much, or they will feel spammed) * Automate the sending of free gifts, send to lots of 'sad' people. Basically, here you're trying to seem like a vibrant gift-giving community. * Automate the sending of premium gifts, send to only a few 'sad' people. To set a precedent for paid gifts. Be sure to show this on your front page, and somewhere in your app. * After a real-life user posts a 'sad' entry, immediately redirect them to Facebook to share their sadness, thus increasing the spread.
Put a small border around the paragraph below it so that it looks as if the page has structure to it.
After you cheer someone up, you're sent to a page saying thanks. Make that page automatically redirect the person to the home page after a few seconds.
2) Once you've got a list ready, go through each blog post, read a bit so you can refer to it, or filter if its not relevant. Find the contact page (CTRL + F 'contact'), usually a form or email will be available. Your pitch will look something like, "Hi my name is ____. I saw your blog post about how chargify was _______. I found that a lot of saas app publishers really like how chargify does x well, but were frustrated by (lack of feature, high cost, etc.). I'm actually working on an app that....Do you think this is a service you'd use? If not, thanks for your time. Or if you'd like to blog a review about us, I'd be happy to tell you more."
3) Like all pitches, some will be ignored, some will be interested, some will pay you right away. Reply promptly of course, within hours if possible.
4) You can try repeating the process of finding blogs through Technorati or Google Blogs, though they have their own issues. Technorati only indexes recent blog posts I believe. Google Blog search is filled with spammers.
5) Repeat the cycle by identifying different types of users who might use your product. This can be difficult because you've probably ingrained the ideal target market user into your psyche. It will also depend on the size and diversity of your market in general.
* Adwords are great, but spending money before you know what kind of conversion you are able to get from natural SEO isn't a good idea. You can always buy traffic, make sure you have the right funnel first - image it is a pipe you are trying to make as wide and friction-free as possible. I think Adwords works great if you are selling a product similar to something already in the market
* forums, blogs, etc. have a very short lifespan so you should expect you will get peaks from high buzz items (like a post doing well here on HN) and it will trail off after that, if you can retain 5-10% that's great. You have to consistently crank out new relevant content.
If you're looking for just "sales", Adwords is great because you can target very precisely who you want visiting your site, as long as you accumulate enough data to understand what's working and what's not. I currently manage a $150k monthly adwords account. For example, a small/mid sized account could have 20k keywords, out of those, 1k will get clicked on per month, 200 would be the "top 50% traffic" keywords, and out of the 200, maybe 50 will generate sales/leads for you. Those are the things you need to understand on a monthly basis, and as soon as you pick up the pattern for which words are the 200/50, increase bids on the 50 and get rid of the ones you're spending a lot of money on and not converting to sales/leads.
If you're looking for just traffic over a long term, I'd recommend the following:
1. SEO - if you can rank for popular keywords relevant to your site, you'll have new visitors from search engines every day. Depending on your SEO strategy, you can be targeting 5 "top tier keywords" that're tough to rank, or 100 "2nd tier keywords" that requires effort, but not all all-day every-day type efforts. Or you could try to optimize dynamically for hundreds of thousands of product names using good SEO practices on your dynamic pages. Obviously link acquisition is a big part of it as well.
2. Link acquisition - getting a link from a popular spot can cause you a "spike" in traffic for a day or two, and if you can keep writing "link-generating content", you can try to repeat the traffic spike from different sources. There're some "theories" on what type of content people link to, such as breaking news before everyone else, top 10 lists, controversy, useful free tool, etc.
3. Brand awareness - getting your name out so everyone (in your target demographic market) knows your brand name. In that case, I'd recommend buying banners - most work on a CPM basis, which is just a fancy term for "Cost per 1000 banner views". Depending on which source you go with, and how targeted of a website/demographic you want to go with,1000 views of your banner will usually cost you anywhere between 30 cents to $5.
Of course, all this depends on the product/service you provide. If all you do is sell car batteries online, then there's no real reason for people to come back to your site once they buy one.
Good luck,-- Paul Zhao
Try to get feedback from the people who tried your website but then left. Repost to the blogs you posted to and try to see what the people who tried it think, and why they didn't up leaving.
Also, make sure your website is solving a real problem. Your site may be 'useful' but unless it solves a problem that currently really really frustrates people, nobody is going to want to spend the effort to go to your site and use your tool unless the problem is solves is really big, and your solution is awesome.
I could give more specific advice if I knew anything about your site. Good luck!
typedef int *func_ptr;
The thing is, you're going to have to be very clear about QOS, future pricing, vendor lockin etc. before you can get people with established businesses to sign up to it.
(from http://news.ycombinator.com/item?id=1533796 )
SF-HH here. We're full up, but you're welcome to crash for a few days while you're looking for a place. My email's in the profile.
The Mountain View Hacker House has a room opening up August 15th, if you're interested (or know someone interested) please contact email@example.com. Thanks!
Second, real reasons: Java is verbose and statically typed, and therefore it takes more work to make changes - it is slower to develop in and less flexible/agile. These things really count when you want to try out an idea; and when you need to adapt it. There's also a community effect, where all those early adopters are working with Ruby/Python, that's the platform cool stuff gets developed for (eg. sinatra, github, haml).
Technically, it's possible to write a sinatra in Java (I have; using annotations for urls); but who would use it? I actually love Java myself, including its static typing, and use it in my startup. But when I've played with Ruby - even as a novice without knowing the tricks - I found it much quicker to develop in, and the code easier to understand because less cluttered. It's probably not as reliable; and the code doesn't run as fast; but these things just don't matter for prototypes and early versions.
My last class at Uni 2 years ago was a survey of web dev technologies. We built sites using ASP.NET, Perl, PHP and JSP. Java and asp.net were tied for worst experience ever. Setup and configuration of the Java stack was 2/3rds of the project. And, that's after taking 2 years of Java in school. Setting up a Java stack on a Ubuntu or a Windows box was equally as painful for me at the time.
My experience at school as made me loathe to try anything Java related. And, while I love the idea of the jvm, I have a pretty visceral emotional reaction to anything java related. I know it's wrong, but I can't even bring myself to do the installation required to mess around with Clojure or Scala.
I get the same vibe from a number of young developers I come across at Hackers and Founders SV meetups that have recently graduated from school. Someone mentions Java at our meetups and everyone at the table groans.
Python and Ruby are essentially lingua franca here in Silicon Valley startup culture, with C and C++ mixed in for speed. I've settled on Python/Django for day to day dev work.
In my case, even though Clojure and Scala look really sexy. The thought of installing a jvm based development environment makes me break out into a cold sweat. If I'm going to play around with a "sexy" language to learn stuff I'm going to play with Haskell, Erlang, or O'Caml, just to avoid using the jvm.
The JSTL is not a factor in speeding up development. A lot of people even prefer a Velocity or Freemarker template engine when they are using Java. And I've never worked with MyBatis but have done plenty of projects with Hibernate/JPA and let me tell you: I've often come at a point in a project where I was wondering how much time I had saved by not writing the easy SQL queries and how much time I had lost by trying to work around some random restriction in the Hibernate API. For all the "hate" Django's ORM gets, I've never run into the same obstacles.
With all that said, the Play! framework addresses a lot of these issues and is a lot more fun to work with.
Also, to be fair, other platforms have "caught up" to what were some of the early advantages of Java. For example, at one time I would have cited JMS and the easy accessibility of async messaging from Java as a big advantage. But now there are a bazillion messaging systems and most (if not all) of the major ones have easy to use client libraries in Perl, Python, Ruby, etc.
OTOH, Groovy/Grails brings a lot of the advantages of a RoR type framework to a JVM based ecosystem, as does Rails on JRuby, so more and more things are evolving to where the various platforms are approaching parity.
Basically, it seems to me like Java web development uses XML as a dynamic programming language when they're trying to do something Java's not well-suited for. The issue is that XML has absolutely no type-checking at all, and so you end up with errors that make absolutely no sense when the only issues you have are simple typos.
The problem is even worse because you seem to end up having to specify the same information in so many different places, and having mistakes in just one of those will prevent anything from working.
I am sure there are ways around this, but the whole point is that if you're using a framework like Rails, you don't need to deal with any of this. It all just works, and having wasted months of time on Java web dev, I want to deal with a system that just works, not a system that requires ten or twenty kludgey three- and four-letter band-aids to get it to behave intelligently.
Also, lots of people judge Java frameworks based on monstrosities like J2EE, Struts or Spring. But there are several very nice, truly lightweight Java frameworks, and even more for alternative JVM languages. The Java stack often does suck, but it doesn't have to suck.
For me part of the lure of JSP apps was that I really liked Tomcat as a development and deployment platform. For apps that needed a lot of background processing, I started work threads in servlet init methods, and liked having everything in one JVM.
I had one app running without restart for several years until my customer's admins let the server run out of free disk space. I am not at all confident of a Rails app running for 3 to 4 years with no restarts.
To answer your question: I might still choose JSP for high volume web apps. For apps with a modest number of users, Rails makes more sense for me.
When you start your java app you pre-allocate all the memory you're going to need for the process' lifetime. This could be 512MB, this could be 2GB+, but it's never small. And this is unaffected by your initial traffic volume. It's the same for 0.001 hits/sec or 5 hits/sec.
On the other hand, if you drop a bunch of PHP scripts on a server, Apache only uses the memory it needs. Sure, you may have some pain scaling it later, but to get up and running you can get a cheap server and run your code.
Also, while I have your attention, have you ever tried installing an enterprise java webapp? It's not like you can pile a bunch of them into one JVM on a machine. I run confluence/jira/bamboo. Each has it's own requirements and basically need to run in their own tomcat servers tuned with their own settings. It's a huge PITA and eats up a ton of memory.
Without frameworks, it is probably OK if you already have a working web.xml. I used to just copy my working web.xml and modify it. Good luck if you want to create a working web.xml from scratch, though. The specification for a proper web.xml is a PDF with several 100 pages (last time I looked, a couple of years ago), and to parse it you basically need a scanner for XML specification files in your brain.
That is only for creating the working web.xml. Specifications for JSP and JSTL are several hundred pages on top of that.
1. The memory footprint of the JVM is significantly larger for a similar app vs. PHP. Also, it requires a lot of tricky JVM option tweaking to get it to work in anything less than about 512mb.
2. The build environment is really heavy weight and complicated. Maven seemed crazy at first though working with it for a while finally got me used to it. It's still crazy complicated compared to rails/python.
3. Lack of code reloading when you hit refresh. JavaRebel fixes this, for a price.
4. Java code is really verbose. You have to become an expert at a lot of IDE features before you can get decent productivity. You absolutely cannot use a simple text editor or anything less than one of the big 3 IDEs (Eclipse, Net Beans, Intellij) and get anywhere.
The future is bright though for the JVM. I have started to work more with Scala/Lift lately and I am really blown away at how fast and powerful it is compared to traditional Java development.
Simply collecting all of your Java libraries, frameworks, dependencies, etc and getting them running in your app server can take days. Minor changes like adding a db column can end up touching nearly every layer.
All these costs do have benefits. Java ORMs generate much more efficient queries than ActiveRecord, have more flexible querying, and better fit into existing schemas; JSP engines can render tens of thousands of pages per second; Java app servers are easily clustered; and much more. But most of that isn't something small or medium web apps use, so why pay the price?
IMHO deployment on the Java stack is not as fun. Time spent configuring Tomcat, Ant, and compiling code adds-up, especially for a basic web app or prototype. The Java stack also has a larger learning curve for beginners.
However, if you work on "enterprise" applications, especially ERP, finance and banking, Java is currently the lingua franca.
If you take away the rest of the stack and are just using JSPs... why bother? I have found a certain comfort zone using Django and I’m not going to switch to a different framework or language just because it’s possible; I would want to know why that alternative gives me a significant advantage over what I’m doing now.
Java brings that kind of thing to the server, and I want no part of it.
I've used it for a demo I've made (some NLP stuff in Java that needed a web frontend, but where running it under Tomcat would have been like the tail wagging the dog) and it worked quite well.
I guess that all the people who want a microframework to get small things done efficiently have moved away from Java at this point, appalled by the whole J2EE circus. And once you have something as elaborate as the J2EE stack as it's meant to be, JSPs are not a good fit, because they don't enforce a separation between presentation and business logic.
a) phpb) railsc) Java + JSP/Servlets/JSTL/Tiles/Struts/Spring/JSF/Play/Wicket/GWT/Stripes/Tapestry/WebObjects
To an outsider, it feels like there is a mountain of material to wade through before you can really get going with a Java webapp; for Python and Ruby, the perceived barrier to entry is much lower.
I love Python and work in it almost entirely now, but previously worked with Java (yes I know the joke about them being the same with the whitespace re-arranged).
GAE gets rid of most of the configuration and scaling pain. Plus it's free to get started. There are some limitations, but essentially it makes deploying Java web apps a snap.
Now the basic servlet idea is pretty damn nice, and once you have your code written final deployment isn't that bad.
java and its frameworks are too bureaucratic. getting things done requires too much. in an enterprise environment with lots of developers, this is good. in an agile, rapid development type of environment with a small handful of people, this is bad.
the closest thing that i've come across that made me want to consider java apps development is grails.
1. Availability, ease of use of Java based hosting provider
2. Time from writing code to live deployments
3. Lack of agile frameworks like rails, django or any other php framework (hot code reload etc.).
- The verbosity of Java wears on me very quickly.
- I can't stand working in an IDE.
- Documentation is abysmal.
- I'm not familiar with the ecosystem (so I don't know what to use and when -- What's 'Struts'? What's 'Tiles'?) and there doesn't seem to be a place to learn.
In the end it came down to picking a language I was comfortable in and could start moving forward the fastest with.
The view layer is okay, although it takes some time getting used to. It does, however, focus heavily on performance, which you mentioned is important.
Regarding versions of SproutCore, I'd highly recommend sticking to keeping up to date with the master branch on GitHub. The released version (1.0) is missing some nice performance and bug fixes found in the master branch. There is also another branch that is focusing on a new theme and view rendering system but I haven't looked at it recently.
For documentation, docs.sproutcore.com is nice, but nothing beats reading the source code for this framework. There's also the mailing list and #sproutcore on IRC.
Also take a look at cappuccino.org. They have an interesting approach in web app development.
Posterous and Tumblr (my favorite of the two) have made blogs about as easy as using Twitter (or Facebook) and there is a lot of market for them to go after.
heads I win, tails I don't lose much.
I wish TweetDeck had posterous support :( and I wish there was better integration into my Android world.
In math, 4+4=8. But, not just 4+4. You can arrive at at the same outcome in several other ways: 1+1+1+5, 2+6, 10-2, etc. When creating a startup, you want success, but there is no clear cut path to the solution.
What's important? Identify a problem. Work at it like a puzzle and create a solution. But, create a crappy solution and employ your customers to help drive the direction of your product. Don't be a yes man and don't be afraid to say no to feature suggestions.
Be passionate. If you're not passionate about building something, you'll lose motivation. If you're not motivated, find another problem and work on building a solution for that one.
Trying to come up with what is the most important field is a very open ended question. You could spend a year learning a field/technology/programming langauge and then find out you don't need it. Build something with what you know. Don't prematurely learn something. Learn enough to get started and then only learn more when you need to.
If you think you need to learn a certain field in order to get started, you're procrastinating. You'll find yourself in an endless loop of "I'll start, but only when I start learning or have mastered X."
So, less emphasis on theoretical math, more on applied statistics. Distributed computing. Experience in huge data sets and the infrastructure technologies to analyze them.
You also need in-depth understanding of a specific application domain, your choice, but it should be one that interests you because you are going to be involved for a long time.
Startups succeed on the basis of solving a problem that is big enough and common enough to get lots of clients who are willing to pay heaps. Do yourself a favour, read up Steve Blank's customer development process if you haven't already done so.
Absurd, huh? Not really. It's the same thing.
People walk because their parents absolutely, positively would not give up teaching them to walk. It's that simple. We need more of that thinking when it comes to "raising our businesses".
When I hear about people starting businesses and failing, I wonder if it's because (a) the business never had a chance or (b) they gave up too soon. I suspect it's a lot more (b) they most people would admit.
I think the secret to not giving up is finding a cause that's just about as important as teaching your child how to walk. This depends upon how your hard work will benefit others, not on how cool it is, how much fun it would be, or how much money it will make. You will have to succeed because of those who are depending on you just like your child depends upon you to teach them to walk.
One time I had a project that was dragging on forever, I was trying to develop a product for an existing business but I kept missing my self-imposed deadlines. 1/3rd of the way in I'd realize I want to approach it a different way and throw away everything tangible I had and re-start. I did that twice. It was dragging on forever.
Then I hand-coded a crappy html sales page and started taking preorders at half price. Got like 60 of them. So, my most loyal customers have given me money just on my word. I promised it would get to them within whatever timeframe.
Now there was no going back, no perfectionism, just had to work my ass off to get it out. And I did! Towards the end I was so burnt out and delirious from all the work and energy drinks and lack of sleep that I actually paid two freelancers from Elance to clean up some of the rough edges on my work, since I knew what was wrong, but I was too broken to fix it myself. But it got out! (Actually, it was two weeks late - I apologized profusely, gave out some free stuffs, and made the second deadline I promised)
After that I had a product that generated some sales for a couple years, so that was awesome. Get some cash. It motivates on many levels. It's like the military commander burning his ships behind him - now there's no retreat, you've got to go forth and conquer, because it's the only way out. Except, unlike burning ships, cash is cool and useful and you can spend it on things, even using the cash you got to help pay to deliver your new product or service. Magnificent thing, cash. Get some. Huge motivator.
I'm not clear on what you mean by "losing faith in the product". Do you mean that you stopped believing that it had any value whatsoever; or that any/enough customers would ever like it; or that you lost faith in your own ability to accomplish it? Or do you just mean that... you ran out of motivation?
The key idea is not that "it takes time", but for it not to take time. In other words, to get something done ASAP. I'm talking like 2 hours, not 2 weeks or 2 months.
esr said to launch a product you need something that (a) runs; and (b) has a promise that it can be turned into something really cool in the near future. It's code + words. Note: this means that the thing that runs is not really cool. [many others also state this idea, but I really like esr's formulation]
For motivation in general (not just for launch), the same thing is true: you want to get something that works ASAP. Fred Brooks says of this style of incremental development: I was stunned by the electrifying effect on team morale of that first picture on the screen, that first running system.
I wrote the first version of my product in 2 hours (though I'd been thinking about it for a couple of weeks; and it took a 9 hour day to write the website). This isn't because I'm some great coder, but because the product was that simple. It wasn't "finished". It took a year before the first sale, and eventually I made enough to retire (for small values of retire).
tl;dr release before it's ready.
Well there's your problem. Assuming you are working part time, two to four weeks is not even remotely enough time to build even the simplest of businesses. Note I'm not talking about building an application, which you could complete in 3-4 weeks, I'm talking about building a business.
I would guess a more reasonable timeline for starting something in your spare time would be about 6 months until you get your first revenue, (or more likely your first 'pivot' because you finally have enough data to realize your idea sucks). I wouldn't be surprised if it took longer. So, whatever you choose to do, try to ask yourself if you are willing to spend most of your spare time for the next year working on it before you even see any money. As soon as you start passing ideas through this filter, I think you'll find more success.
Any more optimistic timeline is a time fantasy.
Side note: this is in my opinion the problem with starting something on the side. It's far too slow. Sometimes it looks like I'm going to be 30 before I make a dime! I think I could cut down this cycle to 2-3 months to my first 'pivot' if I was full time. In other words I think working full time would move things along 4X as fast. Add a competent cofounder and you could probably almost double that.
2-4 weeks? I've been working on my current project for five years... And I still don't know whether it's really going anywhere :(
But maybe I'll find out soon. My project's latest iteration is slated for release this week, after nearly two years of development.
This causes the lack of motivation / reduces the chances of reaching success for a few reasons.
- The first is that you do not need it to succeed.
Don't get me wrong, you would love it to succeed and make money, however you are most likely doing it after your day job and the reality is, you've not risked enough to 'HAVE' to succeed. Therefore it is very easy to fail / decide to try again when things get tough or haven't yet been as successful as you had hoped.
- Another key reason is that, while bootstrapping time is tight.You find you spend hours / days / weeks / months of your spare time on something (while working full time at a job) and the reality is, you just burn out / want free time again. This is not unreasonable, especially if you have a family to look after, or your health is being affected.
- Ultimately every idea goes through a dip, 'a hard' section. The fun idea / initial build has started (if you're a software developer like me, this is the best part), but now you must focus on the other elements such as sales / marketing / support, etc. We can easily diagnose and fix a problem in our code if our product is running inefficiently, but it's often far harder for us hackers to say exactly why the traffic is not pouring in, why the traffic is not converting to user sign ups or why the sales aren't increasing. At this point we think how much fun it would be to work on another exciting idea, doing the fun part again.
- Finally (I already realise this is quite an essay), the idea may not have been so great to start with.It is a common thing to have 'great' ideas, which at first seem brilliant, but after a week seem weak. I always try to give any idea I have at least 3 days of thought before jumping in. Similarly I always ask other people for their thoughts and whether they would use this service?
Ultimately, there is nothing more demotivating than working on a project realising that no one actually wants it.
How to enjoy grinding?Get absorbed in the daily small tasks and focus on them completely. Our brains are built up in a way, that it's impossible for us not to enjoy ourselves, if we really focus on a single task. Multitasking really kills the flow experience, so it's good to to avoid multitasking whenever possible.
Have a grand strategy and know where you want to be in life. Review your strategy every one or two weeks. Look at the week ahead, and the week just passing. Is there an activities you should focus on? Look for small improvements.
Track your resources (time and money). How much time and money do you spend on certain activities (you think you know, but you have no idea without actually tracking it). There are time tracking apps (eg. Eternity for iPhone), that could help. Look at your spendings (again time and money) each day and find things, that you could do better / things that you shouldn't do / things that you should do instead.
There are a million things that might work for you, but the bottom line is to find a way to enjoy the grinding process.
Ecclesiastes - http://bit.ly/bFJruK
Proverbs - http://bit.ly/aJpmva
Henry Ford's autobiography My Life And Work - http://bit.ly/9fZkFG
It's not all bad news though. You need to revisit your motivation for doing your own project. Money alone is rarely enough to offset the emotional drain of doing so. And as I said above, neither is doing it just because society values individuals who pull it off / go the effort of at least trying. Ambition for the sake of ambition won't cut it.
Find something you're passionate about. Change the world, change people's lives, or change a very tiny part of the lives of many people. Find a competitor who has stopped innovating because they have a monopoly on a market and fight tooth and nail to break their monopoly by providing a superior service. Pick a fight and don't back down. People don't give up after 2 to 4 weeks if they're passionate about something.
So keep on building fires, one day you'll hit one right out of the park as long as you learn from previous fires and why they died out.
Firstly, it maybe my personality- Resource Investigator thensecondary Plant. Both type of of personalities are creative but get bored of things pretty quickly. Working along side a Sharper generally solves this problem. For more about belbin have a read: http://www.teambuilding.co.uk/belbin-team-role.html
If I'm by myself. I generally make the time scale large. Like right now, I'm trying to read a 373 page book. I could read it in a day. But instead, I am going to do it over 4 days. So generally, I expand my expected time for success. I talk about it in this post: http://chegra.posterous.com/consistently-underperforming
Also, when I'm finished a small task, I announce it on my twitter and facebook. The likes and the comments generally boost motivations. So, maybe like every two days I have some kind of news to report on what I'm doing.Like, I finish my low fidelity mockup design. I try as much as possible not to mention the future, it decreases your motivation for getting stuff done. Apparently, the brain rewards you for just saying you are going to do it and your friends too, hence no incentives to complete the task. So, do it afterwards and obtain the rewards from there.
I would suggest building a very simple feature set that you an launch quickly (MVP in startup terms) or even a quick mockup and ask your end customer (or who you think your customer is) what they think of it.
If you have a prototype a customer wants then you will be excited. Set some deadlines, targets, goals, and really execute on it.
That's my 2 cents.
I was thinking about writing a short post on this. I suspect this whole agile culture with releasing crappy version 1 and iterating may be misleading for some people. For example, I've never heard of authors iterating their fiction book - they write it and sell it. If they don't sell right away, they may sell it later, so it's not an immediate failure. I think maybe this, at least partially, may be applied to the software world. Games and iPhone apps pretty much fall into this model. But maybe webapps could somehow do the same. The point is, I see nothing really wrong with this attitude of working hard for some time, but not wanting to continue to invest your time and energy into the product after its release. It maybe be good for some products, but bad for other. The real problem is the current trend towards iterations and continuous development, which may fool some people and make them unhappy.
Faith in product or self?
I think you are right to question the ratio of HN articles readers obsess over at the expense of psychology. You want to build something, but first you have to overcome many hurdles. Somewhere along on the way the balance of motivation and flexibility that keeps hackers working on projects gets out of whack, code stops getting written and your project dies.
Overcoming obstacles is what it's all about. If you avoid signs of failure  you have a better chance of completing the project. This of course doesn't mean the project is worthy of being called a product. Users just might not like what you have to offer. Not completing the project/product is the quickest way to failure. There are no easy answers here. Keep moving forward.
 Reading this motivates me to finish an article I've been planning on failure. Here's some patterns of failure I've noticed ~ http://seldomlogical.com/2009/08/12/10-signs-of-failure
You loose not faith but interest as soon as you realize that you could actually do this and here comes the important part *if you wanted to!
So if you want to do something about it, you need to make sure that once you have established the groundwork someone else will take over the nitty gritty of finishing.
Go out to the library, or borders, barnes and nobles (or digitally) and buy this book - http://www.amazon.com/War-Art-Through-Creative-Battles/dp/04.... It's called the War of Art, and a really short read, 150'ish pages (but actually more along the lines of 75 pages). A friend of mine loaned me his copy and it's definitely pulled me up from the doldrums I've been in recently to get some perspective. I suffer from pretty much the same thing and succumb to that resistance, or what other people sometimes call the "lizard brain", in getting something DONE. It's HARD.
Honestly - just read the book. It'll help. I promise.
In a roundabout way the feelings we are unwilling to experience end up running our life. So maybe it would be a good thing for you to take the quiet time to discover what is beneath the behaviour you abhor.
One way to do this is to ask yourself what is it that you would lose, or tightly held belief that would be invalidated, if you were incredibly successful. And then rather than try to answer this question with reason or your intellect, just write a page or two without thinking, and see what comes up.
I found the biggest motivator is user feedback. Especially positive ones.. It makes me stay up late to get another thing implemented or fixed etc.
If I would run out of encouragement from users or people around me for a while, I think that is when I lose interest.
After realising this wasn't working, I re-listed it for $5 and the first person who contacted me actually came and picked it up without any issues.
It's about consulting, but it applies to freelancing as well. Good discussion of rates and what people really want in terms of service and deliverables when they hire you. Very good article, there's been discussion here on HN about it too if you go to searchyc.com.
Other things to think about: Elance, Odesk, Rentacoder, or other sites that let you make some cash would be smart to look into, and look at OSS for an option to do some interesting work with smart people.
Here's one idea: Have ehansul write and open source code that would be helpful to you. That way there are no ownership issues.
See http://www.tawheedkader.com/2010/04/how-i-used-heroku-chargi... for inspiration.
There are tons of opportunities that you can take on even if you have nothing in your portfolio.Do what you do but earn some cash doing it.
I am going to take him up on his offer. I have specific requirements and i have a working prototype of the same , it would be interesting to see what he makes of it (provided of course he takes me up on it.)
Trust me, someone will bite. That place is the Grand Central of bottom feeders.
More requests are welcome, but I am unlikely to be able to actually do more until later. If you contact me though, when I am done with the work I take up now, I can start with yours. You'll get a reply from me regardless of course.
Often just having a deadline for doing something is enough motivation to actually do it. I find myself procrastinating on personal projects, while I can finish (or at least get close to finishing) projects with clear deadlines pretty much on time.
Another great way to build your portfolio is to approach local non-profits and ask to volunteer to make web apps or website improvements for them. There is almost always a way to make a big difference.
First, realize that the search process is totally different from a job hunt. Good tech companies hire for talent, not skills. However, developing talent into something comercially useful isn't a short-term proposition. Unless you have extensive project management experience/have shipped several impressive things, your best bet is to become expert at a particular skill/tool, and sell that expertise, than being a good "back-end developer".
You need to get comfortable around non-techies. This means: explaining how your contribution reduces expenses/increases revenue, realizing the client often doesn't know, or frankly give a damn about the technical merits of the project ("python? you mean, like, the snake?"), and that you'll have to network a lot with non-technical people. Tech people might be a source of referrals, but most of them default to "building" vs "buying" (paying you) to get the job done.
Get off the internet. Seriously. Business-to-business commerce is still very telephone, referral, and relationship-driven. Elands, craigslist, etc. puts you head-to-head against undeniable idiots, offshore guys whose cost of living is about 1/10th that of oakland
www.elance.com (better fixed jobs)www.vworker.com (better by the hour)www.ifreelance.com (don't know it well)www.scriptlance.com (smaller?)
(Try this article I wrote for DevX: http://www.devx.com/RubySpecialReport/Article/34502
I tried to give an example that would show off some of the nicer things in Ruby.)
After trying the language, if you don't like it, don't use it, and stop reading Ruby articles.
BTW, anything that claims "Blub is so awesome, you should use it," but doesn't explain why, isn't worth the time of day. Ignore them.
It's unfortunate that there are some people who gush over Ruby like it was their first high school crush, but so what? Try a variety of languages, find one or two that suit you, learn them well, and go make stuff.
Code talks, bullshit walks.
Based on your comment about web programming, you are talking about Ruby on Rails which is the web framework for the Ruby language.
I've just gone back to learning RoR after trying it a few years ago. I'm normally a PHP programmer, but have been playing with some RoR with MongoDB stuff.
My take on it coming from a regular LAMP is that RoR has lots of gems (packages) that are easy to install and use.
The code generators get you up and running really quickly, though I'm not actually a fan of most generators.
RoR applications have a rather specific structure. I think it is deeper than MVC, as there are naming conventions for functions, variables/collections, etc.
The structure is good because it is fairly easy to back-trace through somebody else's code to see what they've done.
What I'm finding really challenging is that there are so many small details that are hidden from the code.
For instance, in RoR, 'render' is like an include file, but you don't actually have to type the name of the file or where it exists. Based on the naming schemes and structure of RoR it gets the variable/collection and file name because everything has the same name.
What I haven't found is a place where it explains what RoR is doing, so you know that when you have an error, this is why.
I think we are just supposed to blindly follow the 'it just works' mantra, which has never really worked for me with Apple, and I'm barely holding it together with RoR.
As far as documentation goes, it is tough to beat PHP. The documentation is really good, and the language/framework doesn't do the work for you, so you build a page, put something into the db, get it out, put it on this page, call it from that page, etc. You build your own structure so you know where things are and how things work.
The tutorials I've seen keep going through the very same basic stuff of getting RoR to build crud operations for you, or how to change a view. But getting into the meat of RoR is proving to be much more difficult.
Prior to Ruby on Rails, most people's exposure to web dev was PHP. Go from doing PHP by hand for the simplest CRUD based pages, to the magic of Rails that magically does half the work for the same page. That magic gained the language not just converts, but fans on the level of Apple fans.
There are other choices these days, but thats where the fandom originates from.
I think this is primarily because the syntax can be very intuitive, especially compared to something like perl. Ruby code is generally readable even to someone who doesn't know Ruby (there are some exceptions of course, as Ruby can be very terse in the right hands).
There are also a ridiculous number of gems that are easy to install and use. Need to do document classification? There's a gem for that (classifier). Need to access a database and want to do it through Ruby objects? There's a gem for that (sequel).