Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Building a new community / content web application

by Sixtease (Friar)
on Jul 27, 2008 at 17:43 UTC ( [id://700395]=perlquestion: print w/replies, xml ) Need Help??

Sixtease has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

I am a newbie to web development and I would like to build a web application where people would (not necessarily) register, contribute multimedial content and interact. I don't want to be too specific because I've not seen this thing around in the Internet yet, so I'd like to be the first to do it. :-)

I'd like some advice and general guidance how to tackle the problem.

We have no idea how popular the thing could become -- it may have ten visits per week or a hundred per second. I'd like to save me as much work as possible and mainly to write the thing well -- efficiently, safely, robustly, maintainably.

It seems natural to me to use a web development framework. My friends chant a lot about Django. And indeed, its features look very promising. Especially the speed and, what I particularly like, the beautiful URLs. The only drawback is that it's not in Perl. :-)

What would you recommend me to do it in? Catalyst? We don't want to waste server resources and I have no idea how fast a Catalyst app can be. Can it handle the regex-based URL's like HTTP::Server::Simple::Dispatched offers?

I was also thinking about the possibility that it might need to run on multiple machines concurrently. What would that impose on me as the developer?

I may be a little bit rambling because I have very limited experience in web development and am up to a big task. Please be tolerant. :-)

Thanks, if only for reading this lengthy monster.

use strict; use warnings; print "Just Another Perl Hacker\n";

Replies are listed 'Best First'.
Re: Building a new community / content web application
by Your Mother (Archbishop) on Jul 27, 2008 at 18:41 UTC

    If you're really a beginner to web dev then -- efficiently, safely, robustly, maintainably -- is not going to happen unless you plan to do absolutely nothing else for 2 years and working really hard. Web dev is weird. There is no single part of it that is difficult at all but there are so many moving pieces, side-issues, caveats, and ways to shoot yourself in the foot that getting what you want is very difficult.

    Catalyst will do everything you want as a platform and probably lots of things you don't know you want yet. The community is also really nice and like PM will give good advice on everything from basics to design and standards concerns. Sign-up for the mailing list and lurk and see what you think. If you can install Cat on your box (sometimes it's easy, now and then, not so much) you can have a demo app running in 60 seconds.

    Deployment considerations (100/dynamic pages per second is probably far from trivial -- though I've actually seen up to 150 per second, faked, in my fastcgi Cat app on a budget host for pages which don't touch the DB) can probably wait until you start to see the success that warrants worrying about it.

    Update: I just hit the non-DB page (it loads and parses a single, fairly small, file -- through a Model class) a few times and got up to 240/sec from it. My DB based pages never go over 8/sec that I've seen and tend to average more like 1.5/sec (without caching). I can't run a real benchmark b/c it's shared hosting so I'd make some enemies and have broken results anyway but it's very interesting. They always say the DB is the bottleneck. Didn't realize it can be a factor of 200. Angerwhale is a file based Cat blog. I wonder how fast it is. I'll have to look at its internals.

Re: Building a new community / content web application
by alexm (Chaplain) on Jul 27, 2008 at 22:49 UTC

    You may find Perl Catalyst and Cloud Computing interesting. However, I'm I agree with Your Mother that going efficiently, safely, robustly, maintainably won't be easy nor fast.

    I'd start building something small and easy to change, so it grows as needed. Take a look at Getting Real by 37signals. It has a lot of tips on how to and not to build a web app.

    Update: Rephrased me agreeing with Your Mother. Thanks Burak ;)

      I'm with Your Mother
      that sounds strange ;)

      Update: np alexm :)
Re: Building a new community / content web application
by sasdrtx (Friar) on Jul 27, 2008 at 18:22 UTC
    How is your concept different from Facebook, My Space, irc, flickr, AIM, blogs in general, forums, etc.?

    sas

      The difference is that it will let people do a particular thing. Not just post things so they're posted. There will be a point to posting stuff. :-) And the hassle about managing it, of course.

      use strict; use warnings; print "Just Another Perl Hacker\n";

        "The difference is that it will let people do a particular thing"

        How will this "particular thing" be different from other social sites?

        It will need to be unique to attract large numbers of visitors

Re: Building a new community / content web application
by sundialsvc4 (Abbot) on Jul 28, 2008 at 16:49 UTC

    Ummm... errr....

    Awright, I feel obligated to bust your bubble.

    If you are, as you say, “a newbie to web development,” and you (think that you) have come up with a remarkable new idea and “you don't want to say too much here” (because...) “you want to be the first one (in the whole great-big world!) :-O to do it....”

    Please drink a 2-liter bottle of Reality Juice and call us in the morning.

    Instead of assuming that “you are the first,” kindly save yourself some trouble and assume that you are not “the first.” Assume, instead, (and though it might be painful!) that you simply do not know that “you are not the first.”

    Assume instead that “your idea is run-of-the-mill.” Assume that there are 10,000 other web-sites out there ... none of which you yet know about ... and that, no matter what you're trying to do now, you will not be (and therefore, do not have to be...) “the first.”

    Believe it or not, that's an enormous weight off your shoulders!

    “There are (almost) no truly-unique ideas in this world.” But there's always room for anyone who can Do It Better!

    You Are, in other words, Among Good Friends. There's plenty-enough world out there for every one of us (and then some). Familiarize yourself, without fear, with everything that everyone-else is doing.

    “Don't repeat it... trump it!” We Won't Mind!™ :-D

    Right now, quite-frankly, you feel like you have the weight of the world on your shoulders ... “by gawd, you are The First!” ... when you quite-certainly (and no-matter-what-it-is) don't. So, let me lift that weight from your poor shoulders and let us all move forward from there. (It's Okay... No Harm, No Foul.) Remember, the world always wants “another mousetrap,” not “the first person on the planet who recognizes the need to catch a mouse.”

      What a nice post, really. I had to smile. I can imagine myself responding to my original post like this. :-)

      However,

      1. I lied a little. But just for simplicity. The idea is not mine but my friend's. He's one of the persons in the world who do have original ideas. But you're right still. There are attempts on the web to do something similar. We found them when we sought for a domain. :-) Nothing quite in the spirit where we would like to have it.
      2. We're Czech and the Czech web will be our primary focus. I am next to sure there's nothing quite like what we're planning out there in Czech.
      3. It doesn't matter if there are others running a similar service already because we don't know them (even after searching), so they didn't manage to take it where we would like. Our naïveté lends us a lot of charge and enthusiasm, and I think it may help us manage. If we won't, so be it. :-)
      4. I'm not 100% sure I still qualify for a newbie, maybe rookie would be more appropriate.

      So thanks for the concern, but we're into it. Do wish us luck. :-) I must also thank alexm for telling me about Getting Real. That was exactly what I needed to read. An amazing book. One of those that not only gives useful information but also motivation and enthusiasm. It helped me tremendously.

      use strict; use warnings; print "Just Another Perl Hacker\n";

      Assume instead that “your idea is run-of-the-mill.” Assume that there are 10,000 other web-sites out there ... and that, no matter what you're trying to do now, you will not be (and therefore, do not have to be...) “the first.”

      I fail to see how does that answer the OP question about Web-Development. The question isn't whether he found the next X-killer (where X == your social network of choice), but how to build a web application that will scale, otherwise he's building the next Twitter.

      Stop saying 'script'. Stop saying 'line-noise'.
      We have nothing to lose but our metaphors.

      sundialsvc4 ++

      It's two days I'm following this thread trying to say what you said, but not finding the right words.

      Rule One: "Do not act incautiously when confronting a little bald wrinkly smiling man."

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://700395]
Approved by marto
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (5)
As of 2024-03-28 15:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found