Computer science, philosophy, and the web
This summer, I drove across the country with an amazing woman who told me about some philisophical issues that she has concerning Computer Science. One of our discussions was about how she felt that if she were to enter the field of Computer Science, she would rather spend her time on computational theory research, seeing as eventually we will have solved all of the problems we can with our current models of computation.
Briefly, for anyone who has not studied models of computation, the basic idea is that there are different types of theoretical computers (i.e. models of computation) and there are different sets of problems that each of them can solve. For example, a computerized soda vending machine can solve a much smaller set of problems than the computer you are using right now. Analogously, the computer you are using right now cannot solve certain problems, and thus (theoretically), it is only a matter of time before we have solved all that we can, and until then we are simply "filling in the gaps", as Amy puts it.
This has never bothered me. I have known that we are just "filling in the gaps" for some time, but it was only until I discussed the idea with Amy that I gained some practical insight into what it meant for me. If you're still reading, bear with me while I depart for a bit.
I have been interested in audio and music technology for as long as I can remember. My goal is to try to make a living while filling in the gaps in technology that I want to see filled, which will in turn allow artists like myself to be more productive, and open new opportunities to create beautiful things. Of course, I'd like to have fun doing it as well, but that is for another discussion :).
For the past few years, I have been learning about new technologies and about opportunities for collaborative audio/music applications on this great new platform we call the web. Considering the web in the grand scheme of computing with respect to the philosophical issue described above, of course no one knows where it will end up, but I find myself wondering if there will be very many problems left to solve in the near future. I have only lived in the bay area for a little over a month now, and have already met a handful of people who are working on a "collaborative shopping cart", or a "collaborative text editor", or a "collaborative audio organizational tool :)". When most apps are made into their "collaborative" counterparts, and there is a multitude of distributed computing frameworks in existence, what will be left for the web?
Accompanied by my staying up-to-date with the evolution of the web, I have taken up an interest in open web standards and the process/people involved in taking on this challenge. I have come to learn that there is a well-known tension in the Computer Science industry between the standards themselves and how they are actually implemented by vendors. The most recent "gossip" on this subject is the Google Dart controversy.
Again for the non-computer-scientist, the idea here is that if you have a lot of money for development, you can take the time to create a level of abstraction over the standard ways of doing things if you think the standards suck. This allows your teams to build things easier/more reliably, and at the end your code gets translated into the standards-compliant code which you never have to look at.
Fortunately, many people with these sorts of resources (and many without) are working to improve the standards and make them much more useful in the real world. Unfortunately, since this process is unavoidably so slow, the stereotypical developer ends up fawning over any small enhancement to these specifications that may make their lives easier. I know because I do this too, it can be fun :), but I think that most of the time it is short-sighted, tunnel-vision fawning, which is an issue.
Instead of getting excited and anticipating the support of HTML5 native date fields in iOS, I think if developers instead directed their excitement and anticipation on what we can do to fundamentally move the web platform forward, the evolution of the web may happen at a faster rate. Alex Russell said it best in <= 140 characters:
"The world needs fewer complacent followers of web standards dogma and more directed inquiry into why they all suck so hard." - @slightlylate
Why are there multiple standards for changing the way things look on the web? Why do I have to know what "HTTP request", "Facebook API", "Cross-site request", and "JSON" all mean just to get a user's name when she/he on my site, when he/she has undoubtedly already entered their name 1000 times all over the web? Why can't my mother translate her extensive graphic design skill to creating web sites easily?
These are the kinds of questions I think Developers should be asking if we are really interested in advancing this platform and potentially computing in general. More people in the trenches could be discussing technology at a higher level and deciding how they want it to progress.
After all, it may be only a matter of time until the web doesn't need anymore development :)