Join 3,431 readers in helping fund MetaFilter (Hide)


Web app tutorials for rusty coders?
July 25, 2011 8:12 AM   Subscribe

How can I learn how to develop web apps?

I took a few years of computer programming in school so I know the fundamentals of functional programming and the syntax for C-family languages. I remember the basics of object oriented design, and a little bit about memory management. I can do all the exercises in the Poignant guide to Ruby and Python the Hard Way without incident. I know enough HTML to throw together a GeoCities site, and I have a passing familiarity with CSS. I know next to nothing about dealing with servers. How can I turn my minimal and outdated knowledge into a useful and buzzword-compliant web app? What is the best resource to learn "how to build a basic CMS" the way that I learned how to make QBASIC play blackjack?
posted by modernserf to Computers & Internet (10 answers total) 25 users marked this as a favorite
 
Sounds like you're way closer than most people who ask this question. Two questions:

Which did you prefer, Ruby or Python?

What do you want to build? "web app" is kinda broad.
posted by Leon at 8:21 AM on July 25, 2011


I'm sure you'll get plenty of suggestions for the inside-out approach (books, "write my first CMS" tutorials, etc.) But don't discount the ouside-in approach: find an open source web app that does something interesting, install it locally, play around with it, then start going through its code to see how it works. This has the advantage that you already have a fully-engineered thing to look at and play with, and if since it seems like you have some programming intuition already, you'll probably be able to just pick up the reasoning behind most things. For example, it's likely that there will be some kind of templating system so that what's displayed is separated from the program logic (essential for example if you want to support translations/i18n.) It's likely that there will be a database abstraction layer so that common tasks are taken care of and so that the main code is not dependent on any one database API. And so on. The disadvantage is that if you can't intuit the reasoning behind why something is done the way it is, it will just look like mumbo jumbo; and large industrial-grade applications can be hard to follow due to having a lot of infrastructure. Still, you can overcome that by picking something a little more down-scale. You do have to be sure that you don't pick up bad habits by reading sloppy code, but hopefully if you have intuition you'll immediately see when you're dealing with crappy code (e.g. frequent violations of DRY, few abstractions, lots of apparent kludges to support certain features.)
posted by Rhomboid at 8:43 AM on July 25, 2011


Consider: Web apps are nothing more than any application that spits out valid HTML. In fact, I remember a C++ application written by one of my CS professors that's still in use to this day. It outputs chunks of HTML and simply sits in a directory accessible by the web server. Yep, you just call http://www.example.com/theapp.exe

Not that this is necessarily a good idea. In fact, it's assuredly not, but it was an important step for me in demystifying the idea of what webapps are.

Server-side scripting is essentially the above, just friendlier and more accessible when you choose a language designed for it, like PHP.
posted by odinsdream at 8:54 AM on July 25, 2011


Ruby on rails is where I would start if you've already gotten into Ruby.
posted by empath at 9:39 AM on July 25, 2011 [1 favorite]


Personally, I'd pick a web app framework and follow a tutorial. Ruby on Rails is popular and great fun.
posted by rouftop at 10:09 AM on July 25, 2011


If Rails it is, I'd start with Michael Hartl's "Ruby on Rails Tutorial: Learn Rails by Example"
posted by jsavimbi at 10:42 AM on July 25, 2011 [1 favorite]


My first real programming experience was in Pascal, so both ruby and python feel preposterously loose to me. Between the two, I prefer Ruby.

I don't have any particular goals for this besides rediscovering my passion for an old hobby. I have a lot of grandiose ideas but I'd think that I'm a ways from tackling those. I'd be happy with just knowing how to approach building something like google docs.

Rhomboid - do you have a suggestion for a project to check out?

Is there a particular Rails tutorial I should check out?
posted by modernserf at 11:03 AM on July 25, 2011


A Python alternative to RoR is Django.
It is an MVC framework with a built-in CMS that can mostly build itself from an existing DB schema. I personally haven't worked that with it in a professional setting, but I know a few developers that swear by it.
Being a developer of webapps myself, I found that a greater understanding of the underlying technologies greatly improved my ability to create efficient applications and debug things when they borked. The HTTP request lifecycle and the various types of HTTP requests (PUT, POST, GET, ) became particularly important/interesting as I began developing and consuming REST-ful APIs for applications.
Many of the people in the industry I have spoken to feel that a REST-ful API exposing a bunch of data endpoints
that are consumed by a modular asynchronus HTML5-based UI is the future of web application development.
To build something like this in a more "enterprise" environment I would use a technology stack involving:
Apache HTTPD
Apache Tomcat
Spring Framework
Hibernate ORM
Jersey REST (lives inside Spring)
HTML5 w/CSS3
jQuery

But those are just the technologies I am most familiar with(minus the HTML5 stuff). To get started down that path with RoR or Django, the stack would flatten down to:

RoR/Django (with some kind of REST plugin architecture or a few custom endpoints)
HTML5/CSS3
jQuery

Either of these paths will involve learning some sort of HTML templating language (freemarker for java, django has its own), and totally neglects the database needs of your application (traditional relational vs. NoSQL). For almost anything, MySQL would be sufficient, however.

Feel free to contact me if you have any questions.
posted by bastionofsanity at 11:08 AM on July 25, 2011


My first real programming experience was in Pascal, so both ruby and python feel preposterously loose to me.

All the main server scripting languages (php, perl, python, ruby) are fairly light scripting languages, except Java.
posted by empath at 11:11 AM on July 25, 2011


I am pretty much a programming dummy but I have built some pretty cool stuff using Google AppEngine which you can use with a basic knowledge of Python. If you can grok JQuery on the front end, you can do some cool stuff. The good thing about Google AppEngine is that you can abstract out a lot of the complexity involved in security, hosting, and performance / scaling. I would give it a good look if you don't go down the RoR route.
posted by jasondigitized at 4:59 PM on July 25, 2011


« Older Wires, cables - I hate them. W...   |  Binoculars. I would like to bu... Newer »
This thread is closed to new comments.