Practical web programming books & resources?
July 15, 2010 12:16 PM   Subscribe

Practical web programming books & resources for the ultimate goal of creating a niche community website.

I've been a web designer and technical writer for over 10 years. I'm committed to the user experience and know HTML and CSS at the expert level. I write functional specifications with pseudo code for large web projects and typically design the database. Programmers often come to me to help them when logic and math get complicated.

That being said, I do not know "from-scratch" syntax and methodology. I can look at PHP and get the general gist of what is going on, edit a few queries... but that's about it. I regret not learning programming when I was younger and want to change that. Also, I would eventually like to build a few niche community sites for my own personal projects.

I can get my feet wet with some general tutorial sites and books. But I'd like to look ahead to bigger projects. And I learn best by doing. Please recommend some programming books or other resources that provide practical, open-source examples for any or all of the following:

* User credentials (creating accounts, password protecting info)
* Financial transactions with a merchant gateway (ideally in a subscription system as opposed to a shopping cart)
* Basic community-type sites -- for example, users can browse, search, post, rate, and comment on uploaded files
* Basic collaborative events -- for example, a shared calendar
* Optimizing database queries

I have not decided on a framework yet... I suppose a lot of that would be colored by whatever resources I end up using.

My holy grail is to find a resource that takes you through the creation of a membership-style, database-driven site from the ground up. I'd love to go through a series of tutorials and end up with a real, practical project, rather than a smattering of "hello world" samples.
posted by Wossname to Computers & Internet (9 answers total) 11 users marked this as a favorite
I haven't looked at it in too much detail, but a former colleague recommended Some tutorials require a paid membership, but there are a lot of free ones as well.
posted by disaster77 at 12:37 PM on July 15, 2010

Any e-commerce book for a specific language will contain projects to create sites from the ground up.
posted by wongcorgi at 12:41 PM on July 15, 2010

Do the tutorials for google app engine.

Also almost any ruby on rails book starts off with you making some kind of blog or message board with user authentication and everything.
posted by empath at 2:37 PM on July 15, 2010

Also, the number one most useful skill for developing web apps is knowing how to properly design a database. Can't recommend a book, but do yourself a favor and learn about normalization. It'll help you a lot.
posted by empath at 2:38 PM on July 15, 2010

Pinax is a sort of demo project for the Django framework. Django is an MVC architecture written in Python, but they call it M-T-V: Model-Template-View. Models use the Active Record pattern; you define the fields as a class and translates on the fly into SQL, via a system called the Django ORM (object - relational mapping). Templates take in a set of python variables and render them to HTML. The view routes HTTP requests to model queries (if any), sends the results to templates, and returns the output to the browser.

This design has emerged multiple times now in different languages. Rails, Cake, Hibernate, etc. The main advantage, I feel, is clarity. Unlike PHP, Python is a very readable language. Without something like a framework, you wind up with a polyglot system that's difficult to understand; SQL for the database, PHP for the logic and processing, all embedded in HTML. It drives my code editor wild, and makes it harder for me to focus on the parts I care about at any given moment.

Django comes with a lot of classes designed to implement the stuff you want. Users credentials and authorizations, comments, RSS, caching, etc. There's so many of these things that Pinax was started as a reasonable starting point, rather than starting "from scratch" every time. It's open source so check it out as an example.

A word of warning about the Django project: it moves fairly fast. Books you find or buy on the subject may become painful over time as you spend time tracking down what changed between publication and the version you're using. The Django Book solves this a bit by allowing people to comment on specific paragraphs, but still, it covers 1.0 which was released in 2008. Stick with books that are current, and get through one or two before the next version outdates them all with features you want.
posted by pwnguin at 2:46 PM on July 15, 2010

On non-preview, I should point out that Django is available as part of Google App Engine empath suggested above. The caveat is that they don't support mySQL, but don't need to.
posted by pwnguin at 3:13 PM on July 15, 2010

Building a "membership-style, database-driven site from the ground up" isn't necessarily the best way to learn to code, or to get the best website, either.

I would start with an existing open-source CMS (I'm partial to Drupal but there are many others) and start modifying it to suit my needs. Along the way, I would learn the language that the CMS was written in and be exposed to a lot of code that does all the things you list in your bullet points. And wind up with a site that was, if not cutting edge, at least workable and upgradeable.

If you build it yourself from scratch, given your level of experience, I guarantee you will be REbuilding it within six months.
posted by bricoleur at 4:10 PM on July 15, 2010

Get Using Drupal to learn how to use what's already there and Pro Drupal Development to learn how it works under the hood and how you can add to it.
posted by PueExMachina at 11:08 PM on July 15, 2010

Response by poster: As a note, I've already been modifying Wordpress and Joomla for my current projects and have written some, albeit simple, custom functions. I could probably already put together sites that have 80% of the functionality I want with my current skill-set.

A site itself is not my ultimate goal; developing a good foundation in methodology for developing large sites is. I can tinker with plugins and existing CMS systems, but that doesn't give me the foundation to properly evaluate the end product for optimization, expansion, and scalability, for example.

I've got some beginning programming books to help me with the basics. I'm interested in seeing the process of building larger sites to learn more about various methologies and common coding pitfalls. Even if I don't end up building my own site from scratch, a stronger foundation in large site methodology will help me develop and evaluate plugins better.
posted by Wossname at 7:46 AM on July 16, 2010

« Older Did i just eat that??   |   All I know is Go Fish and Kings. Newer »
This thread is closed to new comments.