

Ask HN: An introduction to web platforms? - gsastry

Hi HN. I'm a college student studying physics. I've been pretty interested in startups for a while now, but I haven't really taken the time to truly invest myself into learning the tools required to build web apps. Would anyone be kind enough to give a quick crash course or point me in the right direction to get started? I see terms like jquery, ajax, javascript, ruby on rails, etc get chucked around all the time, yet I don't know how they fit together in one cohesive whole. It's my own fault for sure, but I would appreciate a gentle push in the right direction to begin to understand these concepts.<p>Thanks!
======
halo
Web server sends pages to client on request. Examples are Apache and IIS.

Web server interacts with server-side scripting language. Examples are PHP and
Ruby. Allows you to generate pages on the fly custom-designed for the user,
and allows you to do useful things like templating via databases with ease.

Web application framework is built on top of server-side scripting language.
These are designed to make life easier for the programmer. Examples are Ruby
on Rails or Django.

Serves to a browser. Browser displays HTML (structured content), CSS (for
designing the HTML), JavaScript (client-side programming language that deals
with interaction on a page). Ajax is a buzzword for JavaScript communication
with the server without refresh. jQuery is a library (essentially a bunch of
useful functions designed to work together) for JavaScript that makes things
like Ajax and selecting individual parts of HTML, something that's usually a
pain, easy to do. Cookies allow small amounts of data-storage on the client-
side.

Typically, people learn HTML first, then mess with a server-side language (or
learn "how to program" in general), then once those two basic skills sets are
there build on them at the same time.

------
russell
Start with a static website on your own computer. You need to learn things in
this order.

HTML

CSS so you can style your pages

JavaScript so you can do dynamic things

JQuery makes JavaScript much easier

With this you can actually publish a fully functional web site with a hosting
company.

The server side is needed if you have a high volume site or one with dynamic
content, such as a shopping site or with visitor created content. For that you
need an application server: Django, PHP, Rails, Tomcat, Jboss, etc. About that
time you will need to think about databases and SQL. My advice is to learn how
to create good pages before learning the server side.

~~~
andrepl
wow. that post is terribly incorrect. get your facts straight. "Django, PHP,
Rails, Tomcat, Jboss" ? as far as I know, only one of those is an application
server (Tomcat?) Though I dont know what JBoss is, so maybe it is too. PHP is
a Language, and django and rails are frameworks.

also, your comment about only needing server-side code if you have a high-
volume site? wtf is that supposed to mean? static HTML would survive a
slashdotting a lot better than any dynamic site ever could.

What are you doing here?

~~~
jacquesm
Considering he's been a member about 200 times as long as you I don't think
that's very nice.

I think Russel tries to make a good point but goes about it in a confusing
way, let me try to rewrite his post so it makes more sense:

Start with a static website on your own computer, this will keep things
simple. There are so many technologies that you could apply to web development
that by limiting yourself initially you'll stand a better chance of succeeding
and not being overwhelmed.

 _You need to learn things in this order.

HTML_

HTML is the language that web pages are built in, it is the foundation of the
web. Since its introduction it has gone through several improvements / changes
so make sure you get a tutorial that shows you things the way they are done
now, not 12 years ago.

 _CSS so you can style your pages_

CSS stands for 'cascading style sheets', and is used to give pages their
'looks'. Best practice these days is to uncouple 'looks' and 'layout' from
'content'. This is a difficult concept to get your head wrapped around because
initially it seems like things are being made harder on purpose, but as you
get more proficient you'll find it easier until you start wondering why people
did it any different.

 _JavaScript so you can do dynamic things_

JavaScript is a programming language that has become the standard for
extending web page functionality on the client side. JavaScript is probably
the easiest way to get your feet wet with programming, because you do not need
anything but a browser in order to learn and practice with it. I'd personally
advise you to use a browser that has a JavaScript console such as firefox so
that you can see the cause of any issues in case your programming is less than
perfect (which it is bound to be initially).

 _JQuery makes JavaScript much easier_

JQuery is a library of javascript code that allows you to perform much needed
functionality without having to code it all up by hand. It also gives you a
good sized chunk of code to look at so that you can learn from other peoples
code.

 _With this you can actually publish a fully functional web site with a
hosting company._

But up to this point it will still be a 'static' website in the sense that no
programs are running on the server side.

If you want to do more complicated things, especially things that produce
pages that are different based on the 'state' saved on the server then you
will need to get into server side programming. Server side coding is used for
almost every serious website nowadays, almost every website that you are a
regular user of will have lots of server side programming done, even if the
output of that program looks like any other webpage.

 _The server side is needed if you have a high volume site or one with dynamic
content, such as a shopping site or with visitor created content._

In order to create dynamic web pages you will need to have a server, and you
will need to install an environment on it that allows you to run the code that
will produce the web pages on the fly.

There are a great number of choices that you could make at this point, you'll
need to consider which language you want to use (the most frequently used
language for web page creation, not neccesarily in order of my preference are:
php, perl, python, asp, rails, java, the site you are readin this on is
written in 'lisp').

Underneath that language there has to be a 'webserver', which can be a general
purpose web server such as 'apache', but it can also be a language specific
'application server', such as TomCat (for java) any one of a whole slew of
these, for a list see
[http://en.wikipedia.org/wiki/Comparison_of_application_serve...](http://en.wikipedia.org/wiki/Comparison_of_application_servers)
).

 _For that you need an application server: Django, PHP, Rails, Tomcat, Jboss,
etc._

Because a server side application will almost always store state (stuff that
remains on the server even if the user isn't there) you will need to get some
knowledge of databases at this point. Contenders are PostgreSQL and MySQL.

 _About that time you will need to think about databases and SQL._

My advice is to learn how to create good pages before learning the server
side.

And I fully concur with that.

~~~
russell
Thank you for your expansion, just what I wanted to say. I was at work and
severely time limited. My real point is that there is a huge amount to learn.
The place to start is with good pages. I actually learned in the reverse order
starting with SQL, but I spent a couple of decades at it.

~~~
jacquesm
De nada, I figured something like that was the case :)

