If you were to make an HN/Reddit/etc clone (for a niche)...
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".
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).
I've been stuck in this "Where do I start, what should I learn, what should I use?" rut for 6 months now.
18 comments
[ 3.3 ms ] story [ 50.8 ms ] threadCode: https://github.com/nex3/arc/blob/master/news.arc
Instructions: https://github.com/nex3/arc/blob/master/how-to-run-news
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/
More fun? try Go and Redis.
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.
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.
Ruby Koans looks fun though, so I might work through your pointers anyway just to learn something new, thanks.
Enjoy the Koans, they are brilliant fun and great for learning.
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
Will play with it more over the weekend, thanks.
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
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.
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.