Ask HN: I want to make a webapp. Where do I start?
I have coded up a lot of desktop applications and I am good at programming in Java and Smalltalk. Now, how do I get started with webapps?
Are there articles/blogs that compare web frameworks (RoR, Django)? Any starter kits for Javascript, CSS etc? How do I get a high-level overview of how things fit in?
I realize those are too many questions in one post :) I am just hoping to tap the HN resource lib and that might be helpful for others too. So, if you have anything at all that you think might be helpful to someone just starting, please do post it across
36 comments
[ 3.4 ms ] story [ 91.4 ms ] threadTo get a good overview read the HTTP RFC. IMO, JavaScript and CSS should be the last thing to learn.
You won't regret it!
MSDN contain mountains of webcast on everything, the educational value is huge. I wish more webcast existed for Java, Groovy, Javascript, Perl, Grails, Catalyst, Spring framework!
The soup to nuts series covers everything, similarly other webcast series, the idea is simple and very effective, you will spend your first 10 or so hours looking as vidoes and presentations, next you can move to books and online forums and blogs
After he finishes these webcast, moving to RoR will be a much simpler road, even when RoR is a different framework
If you think in terms of map, fold, and filter, you'll be right at home in C#/VB.NET (they're just called Select/Aggregate/Where instead to be familiar to people whose background is SQL and not functional programming). Java, on the other hand, is agonizing to me.
You might not like it but ASP.NET is a popular and extremely effective environment for building interactive web applications. I personally use a variety of different tools to build web apps and .NET ranks with them.
OK I guess this could just turn into a flame war, but I just don't see why you would choose ms for web development, instead of all the free tools with great communities.
Maybe your first port of call could be jsp
Tis a shame.
If you want to just jump in and make something frameworks such as Django and Rails make a nice level of abstraction above the database and even above the raw HTML.
If you're looking for a recommendation, I love Django.
He wants to revamp the site, which he hasn't fundamentally changed in 5 years or more, and asked me what to suggest. 'python manage.py inspectdb', the built in admin, and clean separation between code and style converted him to Django.
Look and feel? No need to switch from PHP. Performance? A framework might help, but it might not. Maintenance time? Could be looking ground up here.
Again, if this is a redesign for the sake of redesigning, it doesn't really matter what you use. If there is a specific goal though, changing frameworks/languages should only be done if it provides a way to reach the goal.
He isn't switching for the sake of redesigning, I don't know how you got that impression.
Maintenance time is a key factor here - he rarely looks at the code, so PHP-spaghetti (we are talking '99 PHP, pre-OO and basically impossible to not create spaghetti) is getting unbearable.
Why, given the existence of Rails, Django, TurboGears, Ramaze, Merb, etc.?
For CSS: I've never used Blueprint.css, but it looks pretty awesome.
Maybe Seam would be interesting, too - created by the Hibernate guys, it is supposed to be inspired by Rails.
Plus is has great integrations with Ajax4JSF and RichFaces which makes adding a nice Ajax front end very very easy, even if you don't know much JS, like me.
But as far as what to learn, I'd highly recommend Python and a web framework such as Django or Pylons.
GWT is a higher level of abstraction than most other frameworks, which some like and some do not. The top-most layer is actually not coupled to anything specific related to javascript, DOM, or HTML in general. DOM manipulation and javascript are treated much like in-line native assembly code in a traditional high-level language. You can develop an entire web application like GMail without ever seeing anything below this high level abstraction. This may make it sound weak or limited, but its actually very powerful b/c you can focus on building rich functionality rather than debugging erratic cross-browser quirks.
If time is critical, then I figure you'll want screencasts for the language/framework you need to use.
I don't know of any that exist for any other language/framework, but Ruby on Rails has really excellent ones at:
http://peepcode.com - not free but no one else compresses an entire Rails book in 5 hours of video
http://railscasts.com - 5 to 15 min useful segments related to ruby on rails
Once you feel a little more comfortable after viewing the videos, the Pragmatic Programmer Series and Oreilly books are a good place to continue.
Almost forgot - you can test out all you learned at (YC startup) http://heroku.com (nothing to install on your computer - easy to start)
django is a great framework for beginners.. start with sqlite for a quick db to use with django then get to postgres as soon as you can.