Hacker News new | ask | show | jobs
Ask HN: I want to make a webapp. Where do I start?
14 points by subhash 6676 days ago
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

14 comments

If you want to first learn the fundamentals, PHP/MySQL is a good place to start.

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.

"If you want to first learn the fundamentals, PHP/MySQL is a good place to start."

Why, given the existence of Rails, Django, TurboGears, Ramaze, Merb, etc.?

My brother was a hacker in the late 90s, early 00s. He has a massive online hockey pool that he created somewhere around 98 or 99, all wrote in php.

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.

What's he re-vamping and why?

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 is rewriting the site. Why? Because he wants to add a bunch of new features that would take longer to hack into the old system then to rewrite an entire new system. He is open to learning some new things, hence the language switch.

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.

As you are good a Smalltalk, I think you should take a look to http://www.seaside.st a framework for developing webapps in Smalltalk.

To get a good overview read the HTTP RFC. IMO, JavaScript and CSS should be the last thing to learn.

ASP.NET: Soup to Nuts http://www.benkotips.com/Default.aspx?tabid=798

You won't regret it!

lol good call, I didn't even think about that and its how I make my living. C# is java in .net clothing at the end of the day. .net apps scale pretty well too.
C# 3.0 has closures, expression trees, LINQ, and other features that make it much more expressive than Java in my mind.

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.

honestly, I was pointing to the webcast more than the framework, webcasts are a great educational tools for new comers.

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

Agreed, you have to start somewhere and ASP.NET works straight out of the box. After a while you might want to take a look under the hood and see just what .NET is generating and that might introduce you to some of the alternatives to just straight .NET - but you will be doing that with a lot more knowledge.
Hey - if you disagree with my post feel free to post a reply making your point. A downmod is just childish.

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.

But then you have to contend with IIS, more expensive hosting, a smaller pool of knowledgable people on the subject of windows hosting. Not to mention the less reliable operating system/webserver.

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.

Since when was Microsoft relevant to webapp development? :/
If your Java experience is with GUI programming, you should be right at home with Google Web Toolkit. You don't need to worry about complicated web-related tasks such as handling asynchronous calls, that is all abstracted for you. You can layout your pages like you would a Swing or SWT desktop app and that should get you started.: http://code.google.com/webtoolkit/

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.

I'm working on a new commerce app for a well known large company, with GWT on the front end. In the past I've worked with most of the well known Java frameworks - spring, struts, JSF... It's a different way of thinking, but it has been pretty enjoyable to learn so far.
If you're good in Smalltalk, check out the Seaside framework http://www.seaside.st/
Agreed. If you already know Smalltalk, then Seaside is the best possible framework to get started with. You will be at home, and it probably won't feel too different than what you are already doing.
I posted this before, but I can't find the link in YC...

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)

For Javascript: Ruby is kind of similar to Smalltalk, and Javascript can be pretty Ruby-like if you use the Prototype/Scriptaculous frameworks.

For CSS: I've never used Blueprint.css, but it looks pretty awesome.

I don't think I'd want to starting out by learning to code relatively complicated things to a framework. If you learn a framework you won't be so much exposed to the real technologies - HTTP, HTML, CSS, Javascript. I think I'd start by reading the RFCs for those. Then write some web pages by hand with HTML and then try to write a program to do what you just did by hand. Also study the source of any other web apps you can find - open source software is great for learning.
You could probably dive into Rails and get something working. Diving in and doing something is a lot better than trying to pick a framework. You can get started with anything, really, including the languages you know. Smalltalk has 'seaside', Java has a million frameworks. You would probably not have much trouble with Ruby or Python either.
Yeah its a slow transition. Dont waste too much time trying to "decide" between a language. I just plunged into python (sorry all RoR fans out there, nothing personal)...

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.

For Java I would say Spring is the current standard, although I admit the web part of spring is a bit confusing at first (in reality it is quite simple, though). Don't use Struts, please.

Maybe Seam would be interesting, too - created by the Hibernate guys, it is supposed to be inspired by Rails.

My day-job project is being done in Seam... it does seem quite rails-inspired, and comes with a lot of free scaffolding and tight integration with Hibernate. We are using jBPM, too, which also gives a lot of free scaffolding.
Yes, I've used seam for several projects and found it to be an amazing framework that lends itself to rapid development and web apps that can take a Slashdotting+Digging on the same day.

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.

You may as well start with JSP at a free web host like http://www.myjavaserver.com/ or http://www.eatj.com/ to play around.
Are there anything like this for python (w/wo django)?
Not free, but http://webfaction.com is a shared hosting provider I've used in the past that has a one-click setup for Django, Rails, etc. Plus they offer PostgreSQL (which not a lot of shared providers do). I don't use them anymore, but I think it's something like $10/month for the cheapest plan. It's great to learn on.

But as far as what to learn, I'd highly recommend Python and a web framework such as Django or Pylons.

PHP! Zend Framework FTW! http://framework.zend.com and add a little jQuery into it. http://jquery.com
isn't web objects smalltalk based?

Maybe your first port of call could be jsp

WebObjects used to be available in both Java and Objective-C, which is influenced by Smalltalk (it also used to be $50,000... and now it's free with OS X). However, Apple killed off the Objective-C API around the time Java was first being hyped.

Tis a shame.