Technologies for building web applications
LAMP
A typical web application will consist of a web front-end, a database and some back-end processing. The acronym LAMP refers to one of the most popular such setups which uses Linux, Apache, MySQL and PHP (or Python). I write most of my applications in PHP because it is open source, easy to write and is very well supported with community documentation. Most web server solutions from hosting companies come ready to serve up pages written in PHP and there are tons of code samples that can get you up and running with some basic functionality very quickly. MySQL is the database of choice when cost is an issue. You can use it for free under the open source license and ones you get big enough, you can pay them for support and consulting.
Amazon SimpleDB
I've become a huge fan of Amazon's web services. Their SimpleDB offers a simple way to store data in a database. Because they host the database, I don't have to worry about optimizing the tables, updating indexes or ensuring I have backups in case a disk fails in the server. I can just think about the data I need to store and get to work right away. The downside is that Amazon's SimpleDB is not a relational database so instead of having tables that I can link in my queries, I have to run a set of sequential queries to get all the data I need. On the plus side, every row of data can include arrays of values. For example, in a database of events, I have a field for "Guests" and instead of storing one guest in every row, I simply store all the guests in one row. It's a bit different than how most people think about databases but the reliability of Amazon's system is well worth the change for me.
Amazon SQS
One problem of any large appliation is that you most likely have multiple servers all talking to each other or you have back-end processes that need to happen on a schedule or based on another event taking place. With Amazon's Simple Queue Service, you can add commands for whatever needs to happen next to a queue that is managed by Amazon. Any one of the servers in the application can ping the queue, get the next job (and lock it so that another server doesn't process the same job in parallel) and remove it after the job is done. Another benefit is that if the server handling the job croaks in the process, the job continues to be available in the queue and will be picked up by another server later. It guarantees that all the work gets done and no customers are left hanging.
MySQL
I recently discovered
WebAssist's Data Assist module which simplifies working with databases in Dreamweaver