Don’t underestimate LAMP

I've recently seen an increasing amount of discussion about the LAMP stack (Linux+Apache+MySQL+PHP/Python/Perl) -- specifically, as an alternative to the traditional Java-based development stack (app server+enterprise DB+J2EE). I'n a technical landscape that tends to be polarized around Microsoft vs. Java, LAMP is quietly gobbling up a lot of ground.Open source "hit the radar" with Linux a few years ago. Apache has been the dominant web server platform since the mid '90's. The rest of the stack (MySQL, PHP, Python, Perl) has been seen as a nice set of tools for hobbyists and prototype work, but wasn't generally regarded as a serious toolkit for production development.

People are looking around and seeing that's no longer true.

I've been using PHP since I discovered PostNuke (see Whaddya got under the hood?) a few years ago. At the time, I admired the ease with which static web content could be mixed with scripted content. It had the same appeal for me for web development that Visual Basic always had for Windows development -- you could get started in no time flat, and although popular wisdom held that you wouldn't want to use this tool for anything serious, I could never seem to quite find that point where I completely ran out of gas.

Over time, all these tools have matured, to the point where it's pretty foolish to dismiss any of the LAMP tools as amateur-grade. There simply aren't too many critcal capabilities you can get in "enterprise" software development tools that you can't find in the LAMP stack, too.

The two shocking realizations that (1) these tools are for real, and (2) they're wresting developer mindshare away from Java and/or Microsoft stacks are hitting some people pretty hard. In the last week or so, I saw an article on LooselyCoupled.com entitled J2EE: No longer required. This article was mildly interesting, but the real eye-opener for me was when a link got posted on Slashdot and generated a literal firestorm of resistance from the Java community there. Since then, I've seen some additional aftershocks (What's so special about PHP?) that indicate that the rumbling hasn't stopped.

It's been pretty telling for me to watch the reaction of some of the J2EE community to these discussions. Objectively, I wouldn't have expected this much uproar. After all, most of the LAMP stack is trying to accomplish goals that are compatible with Java's: platform independence and developer productivity. LAMP is compatible enough with Java that there's a vendor called SpikeSource that's putting together a certified development platform that they call a LAMP and LAMJ stack.

At the end of the day, I've got a lot of respect for the LAMP stack and LAMP developers, because my experience is that these people tend to be a whole lot more focused on acheiving an objective through the most efficient means possible rather than getting wrapped up in a holy war. As a development manager, that's what I like to hear.

Generate web service stubs from WSDL

In most web services projects, you wrap existing software in a web service and publish a WSDL to define the services available. But, consider going the other direction -- you've got an existing web service definition, and you want to build sofware to perform to that specification. Here are some ways to get started pdq.

WSDL to .Net

I saw this tip first in a posting in a Joel on Software forum. One of the built-in tools in .Net is WSDL.EXE (look in the SDK folder in your Visual Studio.net install). Normally, this tool is used to generate web reference mapping code so that you can use a web service in your application, but it's equally happy to create "stub" code for you given an existing WSDL.
Notes:

  • Syntax looks something like this: C:Program FilesMicrosoft Visual Studio .NET 2003SDKv1.1Bingenerated>..ws
    l /server /language:vb {your WSDL URL here}

  • type WSDL.EXE with no params to get help
  • the language param can be used to generate code in C#, VB, or VJ#
    (language = CS, VB, JS, VJS)

WSDL to Java

Although I haven't played with this (yet), I'd be remiss if I didn't point out the Apache Axis Project, which does much the same type of thing for Java. See http://ws.apache.org/axis/cpp/winuser-guide.html for a short write-up on getting started.

Google tricks

Knowledge is power. As you can see, I like RSS for news. For on-demand answers, Google's been the best show in town for a few years. Even experienced Google users, though, don't know some of the capabilities available there. You may stumble on these eventually, but wouldn't you rather have your bag of tricks ready when you need it?Google's philosophy has always been to keep its front page neat and clean. They're the anti-Yahoo, and it shows. I've heard there are even people who count the number of words that appear on the front page and ding google if it gets too wordy.

For the most part, this is a good thing. Google is a search engine, and they know it. Stuff that isn't an important part of their main product isn't featured on the front page. The only bad part about this is that it's easy to miss some of the other neat tools available from Google.

To get a sense for what's there, take a look at their about page. It lists some of the most important capabilities, as well as linking to the main "new and exciting" tools. Note the desktop search link -- you've probably heard a lot about that recently.

Don't leave this page without checking out Google labs -- this page shows the stuff that's just about ready for prime time. The scholar search, for instance, looks pretty interesting -- a capability that clearly wasn't there before.

If you run a web site, you'll probably also want to look at the "For Site Owners" topics to learn about getting your site to show up in Google searches.

Happy Googling!