There's been a great deal of fuss recently about Ruby On Rails. Is it just hype, or is it really so simple?
I've got a few ideas for simple web-apps, and I'm looking to learn something new (you know, for fun). I like to code. I like elegance and neatness. I wouldn't mind being able to leave the graphic design to a real designer. I think I know what I'm doing, but I don't know where to start.
I'm not a databases person, but I know a reasonable amount about SQL Server, and I think I know how it differs from MySQL. I don't really know how things talk to databases - when I've done it in PHP/MySQL or ASP/SQL Server it's just been magic. I've played around with phpmyadmin (if that's what it's called).
I know what code-injection is. I know what session variables are. I know the difference between POST and GET. I know about HTTP headers and meta tags. I know why not to use client-side VB, and I'm pretty handy with javascript. I know the difference between HTML and XHTML. I know what a socket is. And a port. I've never really understood CGI. I don't really know what XSLT does to XML, and I don't think I want to either. I like the look of xpath. Unicode is pretty good, and essential.
I'm very Java-literate - that's my day job, and my hobby with Processing - but I've never looked into JSP seriously. Somebody said something about a TomCat. I can write proper C++ with templates and namespaces and exceptions and everything, but I probably write it like a Java programmer (and I never understood all the arguments about strings, and pointers). Would I like C#? If I'm familiar with ASP and VBscript, would I like VB.NET? I'm not a Microsoft person.
I've done a bit of bad C programming using cURL and OpenGL. I know a bit of Python, but I've never done anything serious with it. I know a bit of Perl, but it gives me the creeps. I know a bit of VBScript, but much of it seems back-asswards. I know a bit of PHP, but it likewise seems a bit messy (though intuitive, and I like the look of Smarty). LISP isn't out of the question. If someone wrote web-apps in Prolog, I would probably find it fascinating but it too would give me the creeps.
So... What are you using, and why? If you were learning from scratch, what would you choose, and why?
Why shouldn't I use Ruby On Rails? And what should I use instead?
Bear in mind you have to get me away from Why's Poignant Guide To Ruby...
Niall Kennedy points to a presentation about Flickr and PHP given by Cal Henderson of Ludicorp. I'm pleased about this, because Cal used a screenshot of my Flickr Rainbow as an example of Flickr API usage. The rainbow is down at the moment, but a new version is coming soon. Exciting additions will include respect for Creative Commons licenses (only photos licensed for derivative works will be used) and a standalone non-applet version (I might even do a continuously updating screensaver version, one day).
I need to find out how 'out there' Christopher Alexander was when he started talking about architecture in terms of graph theory (trees and lattices) in his famous paper A City is not a Tree. I know that my colleagues who carry out Space Syntax research in the VR Group at the Bartlett use graph theory heavily in their work, but if I talk to a group of recently trained architects, how many of them will know anything at all about this kind of analysis? If they already have a grasp of it, then it seems to be an ideal spring-board into talking about that classic of software engineering topics, algorithms and data structures. If not, then is it helpful or distracting to talk about both topics at the same time?
NB:- I'm currently only planning an hour long lecture under this heading, so to cover any of this stuff in serious detail will be impossible. I'm still interested in answering this kind of question anyway.
Some more thoughts on turning Architects into Programmers.
I'm going to talk a little bit about "Hackers and Painters" by Paul Graham.
I can recommend reading the whole thing, if you haven't already. If you've not come across Paul Graham before, he's a LISP advocate, which means he does descend into bashing strongly-typed languages occasionally, but there is a lot of good stuff in there if you overlook the brief evangelism.
Here are some choice quotes if you really don't have the time to spare...
"What hackers and painters have in common is that they're both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things. They're not doing research per se, though if in the course of trying to make good things they discover some new technique, so much the better."
And...
"I was taught in college that one ought to figure out a program completely on paper before even going near a computer. I found that I did not program this way. I found that I liked to program sitting in front of a computer, not a piece of paper. Worse still, instead of patiently writing out a complete program and assuring myself it was correct, I tended to just spew out code that was hopelessly broken, and gradually beat it into shape. Debugging, I was taught, was a kind of final pass where you caught typos and oversights. The way I worked, it seemed like programming consisted of debugging.
For a long time I felt bad about this, just as I once felt bad that I didn't hold my pencil the way they taught me to in elementary school. If I had only looked over at the other makers, the painters or the architects, I would have realized that there was a name for what I was doing: sketching. As far as I can tell, the way they taught me to program in college was all wrong. You should figure out programs as you're writing them, just as writers and painters and architects do."
It's sobering reading for those of us who consider ourselves as hackers (or pirate dwarves, if you will), especially the parts about not forcing hackers to be engineers or researchers. I wonder if the other doctorate students on my course also consider themselves as hackers in the first instance and become research engineers as a concession to accepted job roles?
I'm preparing a lecture for architects interested in learning to program. In subsequent posts, I'll be writing some notes on the kinds of things I'll be talking about. These will include, but not be limited to, the following topics:
I'll also be collecting links at delicious using the tag architectsandprogrammers.
Comments are open on this post, and I am open to suggestions. Any help (especially from architects-turned-programmers) will be gratefully received.
Mark Pilgrim on why specs matter - all developers are either Assholes or Morons. There are no Angels. Me, I try to fall into the expert-in-training Moron camp.
Not sure whether the Moron/Asshole axis fits in with Tom Coates' Ninja/Pirate Dwarf/Elf graph. If it does, then it opens up the possibility of being a moron pirate elf, which would be better than an asshole ninja dwarf, I think.
Corollary: there are no angel ninja pirates. Thank goodness for that.
© Random Etc.. Powered by WordPress using the DePo Skinny Theme.