Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have a personal project - a web application I wanted to develop - but I'm confused on which route to take.

I know a little programming, and have dabbled in Pascal, C, HTML, CSS and Actionscript (for Flash). And I don't mind learning a new language (PHP, Python, mySQL, etc). I am not under any time constraint.

About the App:

The best I can describe it is as a kind of expert system (but not AI) that needs to find the best workflow for a process, given a set of initial and final parameters. E.g. a 'capsule' of data must pass through many 'tools' or 'environments' to reach a desired output - something like a very complicated car wash.

Let's say there are many tools that can be used at various stages in the process. I have estimated there are at least 500 tools as of now, and it is bound to grow in the future as newer tools are introduced. Existing tools will also have version updates.

Each tool, on average, has at least 100 properties that define the tool. Some of them have as high as 1000 unique properties. Some of these tools are linked to each other - e.g if one tool is selected, there are only n tools that can correspond to it for the next step in the process. I also have the problem of 'matching' the tools for analysis. E.g. Tool A might have only three fixed rpms - 100, 200 and 500, but Tool B might have rpms from 20 to 2000. I'm not sure how I can construct a database without spelling out each number, as in the example above.

The total number of tools needed for the process can be defined at the beginning, however, it will change as the application becomes more complex in the future. I plan to address every contingency in the process. The idea is - if the user inputs the initial parameters and the desired outcome (another set of parameters), the app must find the 'best' path - sort of like a decision tree. The best path can be the fastest, cheapest, etc. I would like the user to choose what is best for him/her.

Unfortunately, parameters might change, relationships might change (but not regularly) - the 'rules' I will be using might be revised for better accuracy in prediction.

I also need to track each user's path and solutions' for future reference (but no personal details except username and email address for logging in). Maybe when the app is up and running, I'd like to make it more democratic, with users contributing to refining the logic/rules involved.

If possible, I would also like the app to output a graphical flowchart at the end showing the workflow with all tools grouped in an easy to understand layout.

My questions:

  1. Will the app be better served with a relational DB like mySQL or an Object database?
  2. Can I make this work with PHP+AJAX+CSS+mySQL? Is there a better alternative? I would prefer free programs - I intend this app to be free, but I might want to make it commercial later on. I need this program to run on any device that can connect to the internet, including tablets and mobiles, etc.
  3. Do I need a framework? CodeIgniter/Symfony vs Django/ZOPE? Which is the best way for me to begin, considering I might have to scale it up in the future - with more data, more users simultaneously logged in, and more algorithms? I don't want to change solutions later on - if I have to invest time and effort I'd rather do it the right way from the beginning.

I would appreciate any help in getting started. Thank you in advance.

share|improve this question

closed as off topic by Yannis Rizos, Raynos, Mark Trapp Dec 3 '11 at 15:41

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Will the app be better served with a relational DB like mySQL or an Object database? Do you mean Object database, Object-relational database or Document-oriented database? Can I make this work with PHP+AJAX+CSS+mySQL Yes, it's possible. But it's too an ambitious app for someone with so many questions, and I'll advice against PHP, as it lacks the "noob safety features" of other languages. –  Yannis Rizos Dec 3 '11 at 8:11
    
Do I need a framework? You only need a framework if the framework provides functionality that's useful to your application. Since this appears to be a fairly large web application, you will probably have to deal with mundane MVC tasks, so you should use an MVC framework. BTW I've voted to close. You ask too much, and your questions are in the "this vs that" territory. That's flame war territory when you don't have very defined requirements for your application and a possibly unclear view of the technologies involved. –  Yannis Rizos Dec 3 '11 at 8:16
    
Check out en.wikipedia.org/wiki/Automated_planning_and_scheduling. This is an active branch of AI research. Sounds like an interesting project. –  jonsca Dec 3 '11 at 10:02
    
@Raynos Few reasons 1) I voted to close as "not a real question". In principle, I don't think it's proper to close vote and answer. 2) The flame war potential. I'm really bad at containing myself at those, an answer would be rant-ish. 3) I actually believe that PHP should be avoided in this situation. I don't want that on record. And I don't want to have to expand my reasoning in an answer, I love PHP with a passion. :) 4) My question on what kind of database OP talks about wasn't answered. –  Yannis Rizos Dec 3 '11 at 13:24
1  
@jonsca Thank you. Actually, I have read most of this stuff in wikipedia for my research. Even though I want it to approach AI like power in the future, I'll be glad to just get it off the ground as a simple decision tree (using CPM or PERT), and then adding complexity as required. –  kbs_01 Dec 3 '11 at 14:13
show 2 more comments

1 Answer 1

Will the app be better served with a relational DB like mySQL or an Object database?

It doesn't matter. They both work.

Since you need to get something finished pick one that you know.

Can I make this work with PHP+AJAX+CSS+mySQL?

Yes. Since you need to get something finished pick one that you know.

Is there a better alternative?

Yes. But you need to get something finished, so don't start learning new things now.

Do I need a framework? CodeIgniter/Symfony vs Django/ZOPE?

Yes. You need a framework.

Which is the best way for me to begin,

Use tools you know.

I might have to scale it up in the future... I don't want to change solutions later on

Bad idea.

I'd rather do it the right way from the beginning.

You really can't. In two years, the technology will have changed, and every choice you make today will have a better choice two years from now.

Just get something to work as soon as you can. Get to market is more important than anything else.

You'll need to to technology refreshes anyway, so the very idea of "right the first time" doesn't apply.

share|improve this answer
2  
+1 Sounds like you're suggesting to Get Real –  good_computer Dec 3 '11 at 13:14
    
+1 for emphasis of getting finished –  Tom Squires Dec 3 '11 at 13:25
    
-1 For over emphasis on "pick anything just hack code together and make a finished project". I get what your saying you just went off the balance the other way. –  Raynos Dec 3 '11 at 13:38
    
@s.lott The problem is I don't know anything, but I'm inclined towards Python. My main sticking point is either to go with an RDBMS or an OODBMS. Either way, I have to learn it from scratch. I have no time constraint and I've completed complicated projects before, so I'm confident. So my question really boils down to: Django (for RDBMS+ORM if necessary) or ZOPE (for OODBMS). + AJAX for the client-end. –  kbs_01 Dec 3 '11 at 14:10
    
"I have no time constraint". Then toss a coin. Seriously. Both technologies work. There's no "advantage" or "disadvantage" to either one. If you need help tossing a coin consider this: "Heads". It just doesn't matter very much which good technology you choose. –  S.Lott Dec 5 '11 at 1:44
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.