

Ask HN: I want to make a webapp. Where do I start? - subhash

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?<p>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?<p>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
======
thingsilearned
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.

~~~
mrtron
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.

~~~
run4yourlives
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.

~~~
mrtron
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.

~~~
run4yourlives
Make sure you read this first:
<http://www.kith.org/journals/jed/2007/10/27/10686.html>

------
edu
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.

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

You won't regret it!

~~~
DarrenStuart
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.

~~~
henning
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.

------
jsjenkins168
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.

~~~
darjen
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.

------
mcxx
If you're good in Smalltalk, check out the Seaside framework
<http://www.seaside.st/>

~~~
secos
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.

------
chaostheory
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)

------
lsb
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.

------
ratsbane
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.

------
davidw
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.

------
flashgordon
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.

------
Tichy
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.

~~~
joshwa
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.

~~~
modoc
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.

------
nreece
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.

~~~
rodrigo
Are there anything like this for python (w/wo django)?

~~~
rob
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.

------
wenbert
PHP! Zend Framework FTW! <http://framework.zend.com> and add a little jQuery
into it. <http://jquery.com>

------
DarrenStuart
isn't web objects smalltalk based?

Maybe your first port of call could be jsp

~~~
tlrobinson
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.

