Honeylocust
Media Systems

 
 
    Graphics
    Hosting
    Programming
    Databases
    Usability
    Security
    Promotion
    XML
 
Related sites

Programming

The languages that I've got the most experience with are C, C++, PHP, Java, Perl, Python and TCL. At various times, I've concentrated on scientific, graphics, and database programming. I learned object-oriented design during a long stint of Java programming, a set of lessons that I've applied to my work in other languages.

I think a simple and clear design is the key to building reliable and maintainable systems on time. That said, it's important not to overdesign a project -- it's much more important to get a project done than it is spend six months thinking about how to do it. That's one of the reasons that I like PHP as an language for web applications. It's fast, reliable, and easy to install and maintain. Unlike Java-based systems, systems written in PHP can be maintained by programmers without exceptional skill.

Two options are available for making web sites interative: programming on the server and on the client. As far back as Netscape 2, it's been possible to run programs inside web browsers, written in languages like Javascript and Java. I've written client-side programs since the very beginning, but I've developed a strong preference for putting most of the complexity on the server and keeping client-side code to a minimum; although cool user-interface tricks can be done on the client, these often confuse users by being unconventional and keeping track of different versions of different browsers can be an expensive waste of time.

I'm a big advocate of open source. I like Linux, Apache, MySQL and PHP because they're reliable and flexible. They don't lock you into someone else's agenda, and they don't cost thousands of dollars in licensing fees. Often I've shaved weeks off the development time of a project by starting with an existing open source application (thousands can be found at freshmeat.net.) An existing application might have flaws, or not do exactly what we want, but it's often faster to fix those problem than to start from scratch -- and if we do need to start from scratch, we know what mistakes to avoid. I've also found that releasing software as open source is a good way to return to the community.