I love stuff like this that talks about web basics in precise detail. Too much of the stuff out there for beginners glosses over the basics of the web. In the midst of receiving tons of info about HTML & CSS & Javascript & whatever scripting language beginning devs have trouble knowing at all times what level of the stack they are operating at, what's the execution context. Can I write Javascript here? Can I write Ruby/Python? Does it have to be interpolated? This stuff is seemingly simple but is actually so complicated when you're thrown into the ocean that beginners have trouble keeping track of it.<p>And it really doesn't help when more experienced devs, or non-web programmers shame people about web dev being dead simple because it's not. It's a different kind of programming, it may even be easier than writing C and managing memory explicitly and not having garbage collection. But if it is easier, it's only easier once you've mastered it and have a really strong grasp of what is happening at all times. Until you get there, it's easy to get lost in the endless list of technologies you must be familiar with to write even a simple web application. And I know this because I see it in beginners that I have taught and/or worked with.
I disagree with the sentiment of this blog post, because it implies (unless I missed something) that you <i>need</i> to use some complicated web framework to make the internet go.<p>You don't, and I've recently been encountering a LOT of very confused would-be devs who get stuck behind some tangled mess of django installation.<p>The "simplest" web application could look like this:<p><pre><code> #!/usr/bin/python
import cgi
form = cgi.FieldStorage()
name = form.getvalue("name", none)
print "content-type:text/plain\n"
print "Your name is %s" % (name)
</code></pre>
Or maybe you want to get fancy:<p><pre><code> #!/usr/bin/python
import MySQLdb
db=MySQLdb.connect(user=user,passwd=pass,db=test)
c.execute("select something from sometable")
results = c.fetchall()
print "content-type:text/plain\n"
#hey look, CSV data!
for line in results:
print ",".join(line)
</code></pre>
etc. etc.<p>I encountered a dev the other day (I guess I'm a shitty dev, then?) who asked me how my application handled URLs.<p>uhh...apache?<p>"No, how does it handle URLs, though"<p>"Apache. WTF are you talking about?"<p>"No, like if you go to example.com/foo/bar/, how does it know what to send me?"<p>"...?"<p>I swear half the devs I meet lately are more concerned with javascript frameworks and rewriting their own webserver than they are about actually serving content to users.<p>Imagine a baker who was more concerned with building ovens than baking bread.<p>Keep in mind what your goals are when you're working: are you looking to write a javascript framework, or are you looking to write a web application? Then evaluate what path you want to take from "not having an application" to "shipping a product".<p>Sometimes (probably many times), you don't need to make it as complicated as you're making it, and apache will work just fine.
A framework is a weasel word for a Massively Coupled System. The trappings of orthogonality and modularity are given lip service, while actually creating some of the most anti-modular footprints in human systems design history.
I don't know if this qualifies as a framework as it is really minimal: <a href="http://jflask.net" rel="nofollow">http://jflask.net</a><p>In short: java, inspired by flask, uses the http server included in the JRE. Perfect for embedding a small webapp in a java program (jar size < 20k, no external deps). Probably not suited for big scale apps.<p>Edit: homepage
I wasn't able to open the article, it was hanging on a call to disqus.com and I have that IP banned in my firewall (iptables):<p><a href="http://www.tcpiputils.com/browse/ip-address" rel="nofollow">http://www.tcpiputils.com/browse/ip-address</a><p>108.168.209.242
The first two chapters of this online book cover similar ground, but for PHP and the symfony framework:<p><a href="http://symfony.com/doc/current/book/index.html" rel="nofollow">http://symfony.com/doc/current/book/index.html</a>
Part that took me the most time to understand is the different way to have an execution context for dynamic pages ( cgi, wsgi, fastcgi, servlets). I think that should definitely be a part of a "what is a web framework".
I thought it was a good article, there are a lot of different programmers out there, not all do web programming. This provides necessary coverage of the core web stuff you need to know if you want to get into it.
It has been heartening to read so many of the comments here pointing how absurd web development has become with the endlessly more rigid frameworks prescribing their world view onto the developer, effectively reducing them to module install muppets, rather than empowered developers.
Read all of the post.<p>I was expecting some enlightenment at the end or something useful for me, but nothing. This stuff is mandatory for each and every programmer who writes web-apps and I wouldn't call them web-programmers if they wouldn't know these basics.