Good morning -
I'm an intermediate-level developer who wants to build on online data-driven app (CRUD with a few calculations and basic HTML form inputs, nothing fancy) that keeps track of user sessions, and looks "professional" (or at least not "homemade").
I'm looking to develop something with the look-and-feel that users get from sites like:
http://www.datamasher.org/
http://www.thisweknow.org/ (About page says it was made with Ruby on Rails, which I'm unfamiliar with)
(stackoverflow.com)
Any pointers on whether I should just go the Miscrosoft route, and develop in ASP.net with WebForms, or if there's a quick way to do this kind of development (with a WYSIWYG environment) on an open-source platform? If so, I'm willing to learn, if it's somethat intuitive, and I can use to quickly drag/drop, add code, and publish online. Templates would be a plus, too - I'm not a heavy HTML/CSS developer.
I apologize is the question seems a bit vague.
If you go ASP.NET route use ASP.NET MVC. It is very robust platform. It also depends on your skill set as to which technology to pick.
Is this a personal project or a professional one? If you use ASP then you'll have to host on a microsoft server (which isn't free) that is one thing to consider. If you use Ruby on Rails you can use Heroku (free while you're small).
It also depends on what the purpose of the app is. if it is to get something out there as quick as possible, and you have experience with ASP, then use that. I use Ruby on Rails and find the online support fantastic (props to stack overflow) as well as a large number of plugins and gems you can integrate make development pretty straightforward. Every AustinOnRails meeting i go to, i hear more and more .NET people wanting to jump ship and move to Rails, though this is based on an availability bias.
If you had no experience on either, I would suggest RoR since it is free to deploy, open source, and has an extremely active community. I would recommend the Agile Web Development with Rails book if you want to learn Rails.
Aside from that, its really your call.
Rapid application development is not used for building sites you have mentioned. For RAD, there are tooling support inside VisualStudio, like GridView controls, DataSets, SqlDataSource and similar. That's rapid development! But with that approach, you're loosing most of things that was important in building sites like this, and those you mentioned.
For building cool new, web 2.0 sites, you have to do lot of things "by hand", and you need framework that gives you control over page rendering. From request, through business logic execution, database requests, to html rendering process for which you must have absolute control!
Frameworks like Rails (Ruby), Django (Python), ASP.NET MVC (with c#, Ironruby, ironpython,... and some ORM frameworks) are made for that. If you're familiar with asp.net, you should look at asp.net mvc and community around it! But in my experience, there is no quick, rapid way for building sites like stackoverflow, no matter which framework you choose!
Use the Open Source ASP.NET MVC Framewrok, is easy and powerful
Related
I'm kinda new to Node.js world. But I have tried some Node.js frameworks like Express.js, unfortunetly non of them met my requierements.
Since I'm native in PHP, I was looking for some framework similar to Symfony, CodeIgnitier, CakePHP etc.
Basicly, I'm not looking for low-end framework which allows 'only' routing, support for MVC and it is more or less everything.
What I would like to see in strong framework for web apps is something with support of templating system, easy handling HTML forms, user authentication/autoriyation, sessions, caching, emails, some low-end ORM etc. (mostly features which has high-end PHP frameworks)
I know, that Node.js is kinda new technology, but is there some framework, which is going this way? Do you know some releases? Or some groups (forums), where ppl creating and discussing something like this?
Thank you
I would send you to Flatiron, because it's a great framework, but I think you're looking for (dare I say it?) Tower.js. However, I strongly suggest choosing from the large npm module database the modules that suits your needs the best. Flatiron is great for that, as it consists of a set of modules that each do something specific, and ties those modules together in the flatiron module.
You can find some of the most used Node.js' full-stack frameworks on the site nodeframeworks. If you like OOP and the dependency injection of Symfony (with services) take a look at Danf (in constrast, don't expect to have all the features of Symfony in it as for now).
Some of the features you mentioned are actually in express.js. I don't think there are any full featured frameworks in the same way as you have in PHP/Ruby/Python. The good news is that Node.js is Javascript and it's a really simple language. So if you need extra stuff on top of express.js it shouldn't be to hard to do that. Not every developer likes this though but I enjoy writing my own small modules to solve certain problems.
I already have v1 of my webapp written in Codeigniter/PHP.
I'm now working on v2, which will have some significant changes to all MVC components.
I'm pretty comfortable with CI and I like it. Very intuitive for a C coder like me.
But I am wondering if it is worth it to rewrite the app in Rails?
Will the productivity gains be worth the cost of learning another framework from scratch?
I want to be practical and not chase something just because it's cooler or more fun.
Here are some productivity criteria:
HTML and CSS generation is fairly labor intensive. Does Rails have anything distinctive to help with this?
I'd like to reuse other people's code for commonly implemented functionality (e.g. interfacing with FB, Twitter, and other social sites). How much more 3rd party code reuse would I get with Rails?
How much more benefit would I get from the Rails community vs. CI community?
Make automated testing easier. I test manually today, which is labor-intensive.
I'd appreciate specific benefits vs. idealistic/religious arguments.
Thanks!
Codeigniter is obviously a framework built on PHP. While there are fundamental differences between PHP and Ruby, all of your criteria can be met with either of the two languages. Migrating to Ruby would seem to be a waste of time considering your requirements. There are plenty of ways to automate HTML/CSS in PHP and there are numerous open source Facebook/Twitter integrations (just check FB and Twitter developer sections). There are also plenty of open source PHP testing options available. Google is your friend! IMO it would be a big waste of time to rewrite your entire application for the sake of your criteria when there are plenty of PHP solutions to your problem.
I think the better comparison here would be CI to Symfony. Symfony 1.4 is a PHP framework pretty much on par with Rails functionality - as far as I can tell through my research, anyway (I'm not a Ruby programmer).
If you were to switch to to Symfony, you would gain a lot of productivity tools. Symfony 1.4 + Doctrine has the ability to generate a lot of your code/interface for you. Symfony/Doctrine likes to keep you away from repetitive tasks such as building models and data validation.
If you want to do your research ahead of time, I suggest reading through Symfony's free e-book Piratical Symfony to give you an idea of how things work in Symfony.
Now, with all that said I feel obliged to mention that the Symfony team is working on Symfony 2.0 which will not be backwards compatible with Symfony 1.4. The expected release date is March of 2011. I expect that maintenance on Symfony 1.4 will continue in the future.
-- Edit --
I also think that sticking with your native language would allow you to develop with the least amount of overhead. Changing to a new language means having to learn it's up's and downs in order to be truly productive.
IE to be at a point where you're not coming back in 6 months to fix a bug that an experienced Ruby developer would have known to avoid.
To me, this is more a question of how big your current web app is. If it took you a couple of weekends and you do not have a tight deadline, I would switch to Ruby/Rails.
However, if it's significantly large and you actually want to come up with R2 in a timely fashion, I would suggest sticking with PHP.
As to your specific questions, I'm not too familiar with PHP, but I don't think Rails will give you a whole lot more in the HTML/CSS department. Not sure about the next two bullet points. Ruby does have much better automated testing tools, with new stuff coming out all the time.
Here are a couple links about Derek Sivers, who switched from PHP to Rails to PHP and now likes Rails again. It might help your thinking.
http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html
http://railstutorial.org/ruby-on-rails-tutorial-book#foreword
I hear a lot about cakephp, it's even a requirement for some hiring companies on job boards. I'm a beginner programming but I like making things from scratch because I understand everything and it feel more flexible.
For my next project I want to build a site which has users, users can vote and they can post entries as well as manage their entries. Would cakephp be a good framework for this or should I just do it on my own?
I'm a great fan of CakePHP and, up until recently, I've used it for all of the projects I've worked on over the last four years, introducing it to two companies along the way. Now I'm working in Coldfusion so I don't use it at work, but I still do at home.
If you're just starting out then you don't need to worry about CakePHP as a job requisite just yet! Learn PHP as well as you can - get your hands dirty and do all the repetitive stuff like connecting to databases and building queries.
More important in a job application (and when developing using CakePHP or any framework) is to have a good knowledge of the underlying language, in this case PHP. Once you know it well you can make an informed decision about frameworks and MVC. Then you'll really see the advantages, whether it's Cake, Codeigniter or something built by the girl nextdoor.
CakePHP is an MVC framework that was built using the Ruby on Rails style of architecture. More than anything it gives you a convention that you can follow, and other developers can follow, that is well documented. If you build it yourself from scratch you may learn more about the underlying PHP APIs, but you'll lose out on the benefits (likely) of a commonly accepted design architecture.
I would suggest learning CakePHP or try out CodeIgniter instead. The idea is that you can quickly roll out an application with a very robust feature set, that is well tested, that doesn't require you to spend months building out the core components. It is more important that you are capable and efficient then specifically that you know one framework over the other.
CakePHP is a web framework for PHP implementing the Model-View-Controller (MVC) paradigm. It's designed to make PHP web development easier, but the overall workflow is completely different to that of plain PHP.
No-one here can tell you what works best for you, but I'd suggest learning to use PHP before learning to use CakePHP (just as the Ruby on Rails guide suggests learning Ruby before Rails). You won't need to, but it will help a lot.
Model-View-Controller (MVC) frameworks for other languages that you may be aware of and/or familiar with include Django for Python, Ruby on Rails for Ruby, and ASP.NET MVC for ASP.NET.
I have a need to create a web2.0 application with the following features:
UI screens
Integrate with a forum framework
Integrate a blogging framework with the application
Real time chat application (Optional)
Integrate with a email server
Based on your previous experiences, please suggest good frameworks, toolkits, etc which can help me build this app quickly in with following criterion
ease of use
features richness
Can people suggest me the advantages/disadvantages of choosing GWT over Ruby on Rails.
Also if you believe any other platform like PHP is better please suggest me on that too.
Thanks
Try jRuby on Rails ... you get the ease of Ruby and Rails ... and all features and libraries of Java.
GWT is quite interesting in a sense that you can use on client-side regardless of the backend technology. So comparing it directly to Ruby on Rails isn't much fair because ROR is a full-stack solution (except javascript libraries for UI work). Still, in your case, if you want to use GWT, you should be clear with the following points:
You'r comfortable with Java
You app is purely web 2.0 (means no more than different pages than can be viewed as different modules)
Forum, mail server integration won't pose any difficulties
You have a bit more time for development
I would suggest that if any of the above points don't work out for you, then you should move to ROR. Now why I built a checklist based on Java? Because you'll find quick development tools like "Spring ROO"(yes, Spring Roo is the smartest code generator) and scalable, integrable, full-stack technologies like "Spring" in Java. And Spring supports the development of everything you've mentioned. And even if you think GWT won't suffice your needs(in terms of short development time) then you can easily go for JQuery and it's Spring glue library to develop UI stuff.
P.S: Spring Roo 1.1.0.M2 and GWT 2.1 have been integrated to reduce development time many folds but it's not production ready yet.
If you are into java: have a look at grails, its based on a bunch of well known java frameworks like spring and hibernate. You can combine Java business logic with easy to write groovy code.
I want to learn and use Drupal or Django for the following:
dynamic web sites, medium database, multi-level users, paypal integration, content managment, speed (developing), security
I like MVC, ORM and object-oriented prg.
Which is better to jump into ? Which one is more mature, powerful, understandable, object-oriented and easier to use by the time ?
What about Python Spring ...
Also, which of these 3 are better documented, are better for a cv and have more extensions?
Known languages: php, java, mysql
Thank you !
I've built several sites on Drupal and Django, my conclusion is: if you need to create something similar to the standard drupal (or Ubercart) feature-set, you don't have much time for development, and you don't expect hight load pressure on a site - you should pick Drupal.
But if you do need to create something more or less custom (no drupal modules already available) you should go with Django - it is quicker and more pleasurable to implement custom complex features using Django. For example if my goal is to implement a second stackoverflow, I'll prefer Django because it will be extremely complicated to implement this badge-based rating system with Drupal.
P.S.
Studying Python (and Django) is an investment in your future, I think. You'll never be able to implement something similar to DropBox using drupal and php, although it could be implemented with java - but java is not so good from development speed perspective.
I'm primarily a (happy) Drupal developer these days, but a friend whose dev skills surpass mine has switched happily from Drupal to Django. Here's his set of reasons.
Drupal and Django doesn't make for a good comparison, as they are quite different.
If all you need is a simple website with a CMS and Paypal, I would go for Drupal. Drupal's strength compared Django is it's many modules (modular system), which most of the time can get you where you want. Drupal is also extremely flexible, and you can change almost anything from within your own code, and there is a huge demand for Drupal developers. You can also let site builders create content, display content and much from from within the AI.
Django on the other hand, is more simple and structured. It's based a lot more on code, making it fast and easy to develop something, but hard for non coders to change certain things. For sites that require a lot of custom coding, I usually prefer working with Django. Python is also a more structured programming language than PHP (IMO), and it's easier to make more maintainable code.
Jump into what you like or what attracts you most after getting a little overview of the capabilities and constraints. I never worked with drupal, but I can recommend django.
Consider your deployment. Pretty much every host will support Drupal. If you go with Django, you will need to select a host that supports fast_cgi or wsgi
You already know php, so just for that you might want to stick with Drupal. However, I prefer Django over Drupal for many reasons.
http://www.reddit.com/r/django/comments/bhvhz/the_onion_uses_django_and_why_it_matters_to_us/ provides some excellent background.
Basically if want things done properly with lots of flexibility, go with Django. If you're very familiar with php, don't feel like learning python, and your site requirements are basic, go with Drupal.
Something to keep in mind is that Django is a bona fide web framework, whereas Drupal is more of a web platform. That is, sometimes you have to hack Drupal to get what you want or that it doesn't fit all situations.
I had never heard of Spring Python but based on the fact that their own site is powered by Drupal, I wouldn't recommend it. Especially if you know Java already, why not consider the original Spring platform?
I've been developing with Django for more than 2 years and have built a couple of Drupal sites in the meantime (per client's specific request to use Drupal). My conclusions are the following:
Even for a smaller site I would have done it quicker building it from scratch with django (or maybe even PHP) for a simple reason, writing code for me is faster than hunting through drupal's unorganized mess of menus and options, or hunting on the web for a module that implements hack X to enable feature Y.
Migrating a site from development to production with Drupal is a big PITA. You can forget about using a VCS tool. All your work is in in the MySQL dump (including configurations, programming logic, views etc.), a few hacked up modules and the uploaded files.