
If you were to make an HN/Reddit/etc clone (for a niche)...  - Andrenid
... what would you use? What language/framework, what database, what hosting (dedicated servers, cloud?), etc?<p>Reason I ask: I'm "just another" web guy, dabbled in a bit of everything, but never really became an expert in any single technology or language. I'm the webmaster for a large corporation, managing their enterprise CMS, in-house graphic design, landing pages, email campaigns, content writing, etc. Eg, "a little bit of everything".<p>I want to get a bit more into the development/site-building side of things, maybe build my own little startup. I've got a niche that could definitely do with a dedicated HN/Reddit style link-sharing/commenting site, and lots of other ideas but since this is more about the learning than the actual end product, i'm interested in what HN thinks is the "best" solution for these types of sites, so I can start from scratch and learn it all properly (i'm willing to do courses etc, I just need a direction).<p>I've been stuck in this "Where do I start, what should I learn, what should I use?" rut for 6 months now.
======
perivamsi
Short answer: Use anything, it doesn't matter. All the major languages have
good web frameworks these days.

Long answer: You will find comparisons between Rails, Django, ASP.NET MVC and
a hundred other web frameworks all over the net. While some of the web
frameworks are more elegant and mature compared to others, all of them are
constantly evolving and growing. Your choice should depend on your core
language skills. Which language are you comfortable in? Which language do you
want to be coding in for a long time and possibly make a career in?

My suggestion would be to pick Python. There are plenty of hosting options for
Python and Django. Have a look at <http://code.google.com/appengine/>

------
travisglines
We actually did exactly what you're asking here a few weeks ago and applied to
YC this round with it.

<http://www.exipe.com>

We built it in node.js and MongoDB. While node and mongo are young projects we
have found them very stable and extremely fast. (we noticed a lot of problems
reddit had with scaling and we were interested in the stack)

Our decision to build Exipe in node/mongo has been a bit controversial but
we've found no problems thus far with it ... ~2 weeks out with slowly growing
traffic. Check out a few of my latest blog posts here about the experience:

<http://www.travisglines.com>

~~~
Andrenid
I've spent today reading through a lot of the suggestions in the comments
here, and node.js definitely looks exciting to me (not sure why, maybe because
i'm familiar with JavaScript already so it's not so "alien" looking?)...

Will play with it more over the weekend, thanks.

------
imp
> I've been stuck in this "Where do I start, what should I learn, what should
> I use?" rut for 6 months now.

Well, do anything else besides nothing. You could have learned Django, Rails,
or anything else in the last 6 months. Just pick some web based technology and
build something with it. There is no "best" solution.

> I just need a direction

You don't need a direction, you need decisiveness.

~~~
Andrenid
Agreed, although a lot of my indecisiveness comes from the fact that every
single site I read talking about languages/frameworks, all swear that one is
better than the other, and not to use 'x' over 'y', and then the next site you
visit says the exact opposite.

There are SO many languages/frameworks, and all seem to say they're the
"better" one to use.

You're right though, I will just pick something/anything for now, so i'm not
wasting time, and if I need to switch to something else later, so be it.

------
Sapient
It sounds like you actually want to learn instead of just implement, so just
telling you that HN and Reddit are both Opensource probably isn't what you
want to hear.

My suggestion is Ruby On Rails (simply because its what I use and like), it
has a very large, helpful community and tons of resources.

The steps I would take (in hindsight), are:

1\. Grab the Pickaxe book for Ruby 1.9 and start reading.
<http://pragprog.com/titles/ruby3/programming-ruby-1-9>

2\. Do the Ruby Koans - <http://rubykoans.com/>

3\. To get your foot in the Rails door, check out the Rails Tutorial -
<http://ruby.railstutorial.org/>

4\. Once you have those basics, check out <http://railscasts.com>, Ryan has
covered just about every problem you are likely to face, and his casts are
top-notch!

5\. Build something

6\. Iterate.

Of course there are other languages and frameworks which would all work just
as well, but since it sounds like you don't really have a solid programming
background, I think Ruby is really a great language for you to start learning
as if there is any language which will keep you interested, its Ruby.

~~~
Andrenid
RoR is one that obviously comes up a lot in discussions, but i've always been
turned off by it due to PHP based stuff being so much easier to set up on a
server (and to run multiple projects parallel to each other on a mix of
frameworks).

Ruby Koans looks fun though, so I might work through your pointers anyway just
to learn something new, thanks.

~~~
Sapient
Until you want to get some bigger projects up, take a look at hosting on
Heroku. Their pricing scales badly, but you can run a semi-decent site on the
free package, and for any projects that take off, you can scale instantly by
simply dragging some sliders.

Enjoy the Koans, they are brilliant fun and great for learning.

------
tbgvi
You could always use Arc :)

Code: <https://github.com/nex3/arc/blob/master/news.arc>

Instructions: <https://github.com/nex3/arc/blob/master/how-to-run-news>

------
e1ven
I wrote a fairly in-depth version a few months ago, that implemented users,
voting, images, and ran in Python over Postgres on an Linode. If you're
interested, you could check it out at <https://github.com/e1ven/Lonava>

------
jk215
Im basically in the same boat as you "jack of all trades master of none" and
decided I want to go further into back-end programming. I started working on a
HN "clone" using Codeigniter (with freely available online tutorials). I opted
to stick with PHP for now because I am already familiar with it to a degree
and its ease of implementation. I really just wanted to get down to work and
be able to test it using my local dev environment and my simple shared hosting
account. I decided to stay away from RoR / Python/Django for now just because
it would mean learning new syntax on top of learning how to use MVC. Once Im
finished with this I plan on venturing out from PHP.

~~~
Andrenid
I've done a fair bit with PHP but never to the point of writing my own
projects, just modifying/tweaking existing stuff (my days are mostly filled
with WordPress and Drupal sites, and some custom made PHP/MySQL apps). I'm
definitely open to learning a PHP framework but just looking into them is
scary... there are SO many, and everyone swears that one is better than the
other, with no discernible "winner" of the bunch.

------
awin
If you want to move things fast - you can spawn off a new social news site in
slinkset.com and you get a basic social voting site similar to
<http://help.slinkset.com>

But if your intention is to learn how such a site work, I would recommend you
to write one from scratch, and there are many open source reddit clones
floating around, that can help you

------
wsxiaoys
Maybe you would like to take a look at the source code of HN:
<http://ycombinator.com/arc/arc3.tar>

------
evrim
[Core-serveR] - <http://labs.core.gen.tr>

------
rch
Django with PostgreSQL and Apache would be the most practical.

More fun? try Go and Redis.

~~~
rudasn
My vote goes to Django as well. I started hacking a reddit clone last year and
there are many apps to get you started (comments, votes, private messaging
etc). You may find that the apps don't exactly fit your needs and that's when
you start learning even more, by looking their code.

One of the main problems I had was user permissions for each post and category
(subreddit) and what that means for caching and memory management. At any
point you will need to know if a user voted on a certain post and whether or
not they are allowed to edit or delete it based on what permissions the user
has and in which category it was posted. Threaded comments are also a bit of a
pain when it comes to managing memory - I've read somewhere that Disqus uses a
built-in PostreSQL function to build the tree but I haven't tried it.

~~~
slig
For dealing with trees in Django, I recommend 'django-easytree'. I've beeng
using it for almost 2 years and it's flawless.

