Filling Out My Back-End
December 7, 2005 8:26 AM   Subscribe

I'm a graphic designer for a non-profit who has been drafted into something of a web role. I'm comfortable with design, HTML, and CSS, but feel rather ill at ease with larger 'back-end' technologies. I would greatly appreciate any suggestions for what technology I should learn, and the best book (or other method) by which I could do so.

Ideally, I'd like to gain an understanding of how to build and maintain a
large web site, and how to implement databases and password protected areas
within it.
posted by boombot to Technology (22 answers total)
PHP & MySQL Web Development (I own the second edition). Very useful indeed.
posted by Gator at 8:31 AM on December 7, 2005

You'll be wanting to learn PHP and MySQL then. There's lots of books out there - traditionally O'Reilly (publishers) are quite quite good, but your best bet would be to go down to your local library/bookstore, and read bits of a few different books to find out which you prefer.
posted by djgh at 8:37 AM on December 7, 2005

what djgh said - i highly suggest their "cookbook"s.
posted by grafholic at 9:10 AM on December 7, 2005

I've never used it, but I've heard nothing but good things about Ruby On Rails, particularly for programming novices.
posted by mkultra at 9:44 AM on December 7, 2005

There's roughly three or four ways to go about larger Web apps:

1) Enterprise, the Microsoft way: .NET. Over-engineered, overbearing, and, well, Microsoft. Will not teach good programming practices. Fairly popular due to MS's market position.

2) Enterprise, the Sun way: Java ("J2EE"). Sorta similar to number 1, but at least it's not Microsoft. Still quite verbose, trends towards being over-engineered. Also very popular due to Java's overall popularity among management and educational higher-ups.

3) Open source, the "old" way: PHP/MySQL. See other posts :) Better than points one and two, but otherwise not all that great--PHP is difficult to structure properly in and it's so easy to make code soup with it. However there are tons of resources out there, and it's all free.

4) Open source, the "new" way: Ruby on Rails, TurboGears, Django, etc. The new hotness - well-structured "Web frameworks" which are geared towards, well, middling-to-large Web apps, and use the nice languages Ruby and Python.

RoR is the real "new hotness" in that it's the darling child of all the blogerati and they jerk off nightly to it (sorry). However I'm sure much of that is well-deserved.

TG and Django are in Python, which is an excellent language and I believe it's arguably easier to learn for a non-programmer (compared to Ruby); they don't have as much visibility as RoR but are just as good, if not better. TG is a "meta framework" meaning that it ties together a bunch of other projects; Django is more like RoR in that it's much more coherent (but "reinvents the wheel" in some places, for better or worse).

As you can tell I'm biased towards Python and Django; I've worked in PHP a fair amount prior and the move to Python and web frameworks is a godsend :)
posted by cyrusdogstar at 9:55 AM on December 7, 2005

I wonder if responders could speak in further detail about the contrast between options 3 and 4 (I'm tossing 1 and 2 straightaway) in CyrusDogStar's post.

I had expected to hear some PHP/SQL suggestions, and have a vague understanding of how these technologies work together. As for Ruby and the other technologies mentioned, I'm at a loss. I too have heard the ejaculatory praise for Ruby, but don't understand if it, when compared to PHP and SQL, does the PHP part, the SQL part, or both (I've never even heard of Django and Turbogears). I'm also uncertain is Ruby is just the latest thing, to be moved out by something else in a year, or it is the future. With PHP and SQL, I can see an established history.

But if the prediction is that Ruby will be the platform best suited to this sort of endeavor for the next few years, I'd rather start learning that right now.
posted by boombot at 10:31 AM on December 7, 2005

Open source, the "old" way: PHP/MySQL.

Cough. Surely you mean "Open source, the overwhelmingly most popular and best online community supported way"?

Ah good, I thought you might have mistyped.

Yes, there does seem to be some fetishism about Ruby on Rails, but it's interesting to note that a lot of seasoned Ruby advocates are very critical of it. Removed of RoR, Ruby isn't the best choice available for web development.

Python, again, is coming late to the web development game in any serious way, and yes while there are web development frameworks being developed for it, another way of looking at that is that they're addressing a fundamental lack in the underlying language for web development purposes.

Okay, now taking a step back a little bit, it's unlikely the OP will go wrong in choosing either Python, Ruby or PHP. You can't really deliver anything in one, in terms of web development, that can't be delivered in either of the other two. You may have to use an extra layer of 'technology' in Ruby and Python, in the form of the frameworks, but the end result is the same.

I'd personally recommend PHP because it's mature in the realm of web development, has an extremely active support community, and has thousands of 'plug and play' pre-defined classes and functions available designed specifically for the problems a web developer will face.

Again, that said, Python and Ruby are more than acceptable alternatives.
posted by planetthoughtful at 10:52 AM on December 7, 2005

Plain old "SQL" is actually just a standard or a family of standards about how to use and interact with databases; MySQL, PostgreSQL, pSQL, SQLite, MS-SQL, etc,etc are specific SQL-compliant database engines. They're largely interchangeable, except for varying degrees of stability/scalability/some features.

PHP, Ruby, Python, Java, etc are all programming languages; they are what you do almost all your work in, control the logic of the application (how things flow, how to handle user input, business logic, etc) and so forth.

The tie between the two categories is that all the languages have libraries of code that programmers use to interface with a SQL database and get info out of them--by themselves databases are (at the highest level, anyway) simply containers of data.

So, "PHP/MySQL" just means that a lot of people tend to use the two packages in tandem, in the same way that peanut butter and jelly are commonly found together in sandwitches but are by no means the same thing, or explicitly tied together.

You're probably further confused by "Ruby on Rails" which is a poor way of naming something (IMHO). Ruby is the programming language; Rails is the web application framework which is written on Ruby. Calling it "Ruby on Rails" is just being cutesy (think like the phrases "on speed", "on steroids", etc).

Sorry for the rambling-esque comments, I'm at work and don't have the time to really proofread / edit this, I'm just spewing stuff out as I go :)
posted by cyrusdogstar at 11:01 AM on December 7, 2005

Cough. Surely you mean "Open source, the overwhelmingly most popular and best online community supported way"?

In the same way that Windows is the overwhelmingly popular, and shitty, desktop platform, sure! :P

OK, I don't mean that PHP is actually shitty, but stating that something has to be good simply due to its popularity is disengenuous.

PHP is all right, and I did point out its immense community support--but as a language, compared to Python or Ruby, it is much messier, and you cannot escape from that very easily. It's a lot like Perl that way.
posted by cyrusdogstar at 11:05 AM on December 7, 2005

(Last comment for now, I swear!)

Despite my immediate and biting response, I don't think we should be squabbling over PHP here. I've made my case to boombot that I feel Python or Ruby would be a smarter choice, but if he looks things over a bit and wants to go with PHP, I'd much rather he choose it than buy into the corporate mindset of Java/.NET.

Besides, everyone needs to use a lesser language at least once anyways before they can truly appreciate Python ;)
posted by cyrusdogstar at 11:09 AM on December 7, 2005

Besides, everyone needs to use a lesser language at least once anyways before they can truly appreciate Python ;)

I agree. And once they've done their apprenticeship in Python, it's possible they'll be ready to appreciate the wonders of PHP.

Not a given, but it is possible.

* poke poke *
posted by planetthoughtful at 11:30 AM on December 7, 2005

What would be the best book, or other method, for learning Ruby on it's own? How about interfacing Ruby with an SQL database?
posted by boombot at 11:58 AM on December 7, 2005

you should investigate content management systems (CMS) such as plone or drupal. they exist to enable people with your background.
posted by paradroid at 12:08 PM on December 7, 2005

At the stage you're at, it's more important that you're learning a technology and the programming, database, tools that go with it than arguing over which is best. They all work and they can all be used to build most apps that most people want to build. Personally, I'm a big fan of C#, SQLServer and the .NET framework - most people who knee-jerk against it in the usual "OMFG MS is teh suxxxors!", haven't learned it. It is daunting to a beginner, has a steep learning curve, and is overkill if your projects are simple and modest, however (as they should be if you're just starting out). You also have to pay for it.

What matters for a beginner is using something that's quick and cheap to get into, that can be hosted almost anywhere, that there's masses of documentation, articles, resources and tutorials about, and that gives the best resume return for the effort. That would be PHP, with MySQL as a database. It wins because it's by far the most popular, available and written about at the moment and has the largest developer community.

PHP has some weirdnesses that you won't find in other languages, however. If you're more serious about getting into general programming with more than just straightforward web apps in mind, and want to start off right and develop good habits from the start, Java, C#, Python are a better choice of language. But it doesn't sound like that's your goal.

corporate mindset? Please. These are tools, it's what you do with them that matters.


Or what paradroid said.
posted by normy at 12:12 PM on December 7, 2005

For someone already comfortable with HTML but without any programming background, ColdFusion provides a very smooth transition to "back-end" development. For basic development, using CF can almost be thought of as having a wide assortment of powerful new HTML-like tags which allow you to talk to a database.

It costs a few bucks, if you need to own the server-side software. However, affordable CF hosting is widely available, and the developer version of ColdFusion is free. Dreamweaver is helpful but not neccessary for coding in CF. You could go far with a text editor and the excellent WACK.

Some people disparage it, but from what I've seen that's usually based on their experience with a poorly-engineered system (*cough*MySpace*cough*). Since CF is easy to pick up, it's easy for unskilled developers to cobble something together which is a bit shaky under load. But if the complexity of your attempts grows along with your knowledge, you can build great stuff with it. MetaFilter runs on CF. eBags is another big one.
posted by Tubes at 12:57 PM on December 7, 2005

Blue Dragon is an alternative ColdFusion Markup Language (CFML) server to Adobe-formerly-Macromedia's. (There are a couple of others I hadn't heard of.)

I've seen several recommendations for Dive Into Python and Why's (Poignant) Guide to Ruby. W3Schools usually has good introductory tutorials; they've got one for PHP.
posted by kirkaracha at 1:53 PM on December 7, 2005

Please don't learn ColdFusion. It's a total dead-end technology, and I'm speaking as someone who has dealt with lots of CF sites. The PHP/MySQL bundle is probably the right way to jump into things.
posted by nev at 2:54 PM on December 7, 2005

I would think that Ruby on Rails is a bad option for someone who wants to learn to program, because it does so much of the work for you. While that's a huge plus for someone who already knows how to program, it doesn't make sense for someone who needs to know what's happening. Wouldn't it be like learning HTML via Dreamweaver?
posted by AmbroseChapel at 1:18 AM on December 8, 2005

I think this thread largely shows the confusion about nomenclature in the web world.

It's perfectly possible to make a living doing what you do. I work for a big organisation (not a web business) and spend ages converting existing sites to accessible standards-compliant markup, as well as making new sites from Photoshop comps. Understanding accessibility and x-browser css is a full-time skill!

Of course, I also advise on usability, crop and colour-correct images etc but I am absolutely no designer and this is a small element of my job.

I don't DOMscript - am upskillling - but I don't know that it's vital. What *is* vital is that I know when a DOMscript would be appropriate to add functionality/ patch IE quirks and then set about commissioning it.

My job title is "Bruce-the-web-guy. Yeah, the one who keeps banging on about accessibility".

It's a good way to make a decent living.
posted by Pericles at 1:52 AM on December 8, 2005

Bollocks. Wrong thread! I meant to answer this one.
posted by Pericles at 1:55 AM on December 8, 2005

Oh yeah, another vote for CF. If you're used to HTML already, CFML will click nicely for you. L33t programmers scoff at its inline code, but I love the logic of it. I've built everything from simple forms to seriously complex enterprise systems with it.

Personally, I'm a big fan of C#, SQLServer and the .NET framework - most people who knee-jerk against it in the usual "OMFG MS is teh suxxxors!", haven't learned it.

Ya know, I've been spending the last few months familiarizing myself with C# and .NET, and it doesn't suck so much as seem utterly irrelevant, existing only to sell Windows and SQL Server licenses. Why not just use JSP?
posted by mkultra at 4:30 PM on December 8, 2005

Why not just use JSP?

It's a good question. If I had to pay for all the tools and software myself, I would - and probably use Firebird or Postgres for a database. Java and C# are equally useful languages for anything I can dream of doing. Where I think the MS stuff wins is in the tools. Visual Studio is a very good IDE and SQL Server Enterprise Manager and Query Analyser are better than any other GUI based tools for database design and implementation. It's a productivity thing, rather than any inherent superiority in the performance of the technology.
posted by normy at 12:46 PM on December 9, 2005

« Older Looking for French Train Announcement Sound Files.   |   Men didn't die face down in the mud in Vietnam so... Newer »
This thread is closed to new comments.