10 Years Since the Web
I took a break from web development from the early '00s until last year. Since then I've managed to become reasonably up-to-date again. It has been a refreshing ride. Let me tell you about the view through my Web 1.0-tinted glasses.
No Love for <?php ?>
It's funny when '00s programmers discuss PHP. First, someone lays it on thick when he speaks of syntax bugs and XSS-embracing design. Someone else sings the praise of practicality and gentle learning curves. Then voices lower as nostalgic memories occupy everyone's minds.
They are all right, of course. It was glorious and horrible and there will never be a time quite like it again.
Linux is still there, looking strong as ever.
Apache is also around, although it's being squeezed by competition from two sides. For static content there is nginx, powerhouse asynchronous web server and reverse proxy. For dynamic content, where there used to be CGI and apache modules, there's now a whole ecosystem of servers that you connect to your app via standard, language-dependent interfaces like WSGI, Rack and Ring.
While this is clearly an improvement for the performance minded, the choice is somewhat overwhelming to a hobbyist. Fortunately, your framework almost certainly includes a development server that you can use until you have figured out what you need.
SQL is still alive and well. Businesses with high scalability requirements have been forced to move away from general purpose DBMSs towards key-value stores and document stores (NoSql). Essentially they buy horizontal scalability (which means more servers instead of beefier ones) by giving up the expressiveness of a relational system. As a result, if you deploy your app on a PaaS provider, you may not have a choice of SQL at all.
SQL may not be the trendy choice today, but the rumors of it's death are somewhat exaggerated. If you host on your own server, it's just a matter of preference.
This area has seen significantly more fragmentation than the others. The mainstream choices used to be Perl, PHP or one of the more enterprisey ASP / JSP. You
picked your favorite language and maybe a templating library.
The app was externally visible through a single URL, such as
Then Rails et al. came along and changed the expectations of what a framework was.
A modern framework provides URL routing, which means it binds a function or a
posts(id) to the URL
/posts/<id>. Database access is abstracted
through some sort of object mapping. Templating is baked in.
If any of these components are missing, you are probably dealing with a micro-framework. I'm currently using Flask, which is really cute but doesn't do object mapping.
If your service exposes an API, its structure is likely going to be based on REST, although you may not go all the way.
Meet the browser
You don't have to wait though. Web developers have discovered the wonders of pre-processing, so what used to be painstakingly hand-written HTML/CSS/JS can now be generated from the syntactically refined counterparts HAML/SASS/CoffeeScript.
If you can imagine a cross-compiler that would be useful for web apps, it probably already exists.
If I have any regrets, it is that I didn't try to stay up-to-date while the web was being reinvented. When you are not directly involved, it's easy to shut off entirely.
There were benefits. I did avoid some failed experiments. In the end I'm glad to have ended my hiatus. It's a really exciting time to get back to the web.