http://qs321.pair.com?node_id=546988

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

Okay, over the summer (not during the month when i'm thousands of miles from any computer) I want to undertake a project in perl to better help my understanding of the language, networks, and computers as a whole. I want to do something that I have never done before, using all new things that I will have to learn (obviously i'm going to spend quite some time here getting help from you guys).

I was thinking of writing a rudimentary internet security thing (blocking incoming connections and letting the user decide whether to let it through). I'm not looking to make something good by any stretch. This is for me, nobody else.

Does anyone have any good suggestions as to what kind of project to undertake, or even where to begin should I choose this one?

Thanks in advance.

Replies are listed 'Best First'.
Re: Project suggestions
by samtregar (Abbot) on May 02, 2006 at 21:03 UTC
    Lots of authors are looking for help on their CPAN modules. For example, you could add work on XML::Validator::Schema - I'm always looking for patches improving support for the standard. It's a good learning project since coding to a standard doesn't give you much room to get lost. (In fairness, it's also a bad project since the standard in question is a total beast.)

    -sam

Re: Project suggestions
by GrandFather (Saint) on May 02, 2006 at 21:19 UTC

    Simply because it's topical for me so I'm thinking about it, but does touch on a number of different areas, yet is fairly self contained, you could think about writing a build management system. We have a system (written in C++) that accepts email instructions to perform some particular task. The task may be tagged (in the email) as repeating at some interval, or as starting at some specified time (setting up a nightly build for example).

    On my to do list is to convert this C++ app to Perl and add facilities for distributing tasks over multiple computers. My idea is that the current email address remains and is used as it is currently. However it gets polled by all of the build machines. When a build machine picks up an email, it pulls the tasks out and sends them off to a task list email address. Any machine that is available to do some work then picks up the highest priority task from the list and gets to work.

    Obviously you don't have to use an email system to manage the task list, although that is a pretty light weight way to do it. You can simulate multiple computers by simply running multiple instances of the script on one computer. You can write a small script to simulate multiple users requesting tasks at random intervals and with random priorities. Plenty of scope to have fun. :)

    I'm not suggesting this as a "You should write this for me" task, but simply because it seems to fill most of your requirements and could be useful to the community in general if you get that far with it and are happy to release it.


    DWIM is Perl's answer to Gödel
Re: Project suggestions
by welchavw (Pilgrim) on May 03, 2006 at 02:45 UTC
    When learning a new language, I typically re-write "classical" algorithms in the new language. This might be a good start for you, too?

    1. Towers of Hanoi (recursion in the language)

    2. Starving Philosophers (concurrency in the language)

    3. Sorts (bubble, merge, qsort)

    4. Data structs (binary tree, hash-table) (re-implement these using Perl hashes - just for learning)

    ,welchavw