Greatest Windows tool set of all time

Think you know what I’m talking about? Read on to find out what I think, and be sure to register and post your comments if you think I’m out to lunch!I’ve always been a fan of Vince Lombardi’s “This is a football” message — you can’t be successful at the hard stuff if you don’t get the basics.

Windows is magnificently complicated. That it appears simple sometimes to some people is a mark of its success. It’s a miracle that some of the people who use Windows are able to do so — you’ve met these people, too, and you know what I’m talking about.

One of the side effects of Windows shielding us from this complexity, though, is that we often have to deal with black boxes when debugging problems. There’s an awful lot of the Windows iceberg that we never have to look at, and can’t — even when we want to see it.

In this spirit, I’ve got to cast my vote for Sysinternals tools as the best ever. Never mind that they’re free. They also just happen to the best tools I’ve ever seen to get to the bottom of what’s really happening under all the fluff we call Windows.

Armed with these tools, you no longer have any excuse to not know what files are being touched by which processes, which processes are writing to the hard disk, and so on. As with any tool like this, you can easily lose yourself in the details, so you have to have enough grey matter to interpret what you’re seeing.

The right tools mean never having to say, “I don’t know…”

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 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 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.

  • Syntax looks something like this: C:Program FilesMicrosoft Visual Studio .NET 2003SDKv1.1Bingenerated>
    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 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!

RSS Content Syndication

I’m a news junkie. I’ve always subscribed to a variety of IT magazines, and over the years, it’s really helped me to stay abreast of developments. Staying up to date on what’s new can take a lot of work, though. There’s a lot of information available if you want to hunt it down, but instead, why not have the information come to you?

Many web sites now offer XML-based content syndication that allows you to see headlines as they appear, and link to content if it looks interesting. The syndication techcnology is known as RSS (really simple syndication), and although it’s been around for a while, it’s just now starting to catch on in a big way.

RSS Background

I first saw RSS three years or so ago when I began using PostNuke (see “Whaddy got under the hood?”) as a development portal. Its standard install has always had a link in the page footer that said something about using “backend.php” to syndicate news. I was curious, so I checked it out. It turns out that this page delivered RSS version 0.91 content syndication – headlines from the web site in XML form.

Further investigation showed that there were some primitive tools emerging that would read these feeds. PostNuke, in fact, had (via add-ons) the capability of using these feeds to display a block of headlines from sites like Slashdot and CNet. At that time, there weren’t too many sites offering RSS feeds, and you could expect to do a little hand work if you wanted to consume these feeds.

The history of RSS syndication reads like many web standards – there are a few popular versions and several more abandoned offshoots. The original RSS was introduced as 0.90 by Netscape. A refined version, 0.91, was promoted by UserLand Software, and was widely adopted as the first mainstream RSS format. Several other 0.9x standards were published, but none really usurped 0.91. Finally, a 1.0 release and a 2.0 release are both based on RDF (Resource Description Framework), though 2.0 is by far the more popular. Of this multitude, most feed you’ll find these days will either be 0.91 or 2.0, and most readers can handle either. I’ve included a couple links at the end of this article that you can follow for more background.

RSS Technology

All RSS feeds are XML-structured documents (you can often spot links to RSS feeds on web sites by looking for the [XML] logo). If you take a look at the raw XML, you can see the general idea. Don’t dwell on the XML, though, because in the next section, we’re going to look at applications you can use to read RSS feeds.

<?xml version=”1.0″ encoding=”ISO-8859-1″ ?>

<!DOCTYPE rss (View Source for full doctype…)>

<rss version=”0.91“>




<description>PostNuke Powered Site</description>









<title>Whaddya got under the hood?</title>



<description>Just in cast you’re wondering what makes AppDev go,

it’s powered by a Content Management System (CMS)…</description>



<title>Tip: building connection strings from scratch</title>



<description>Here’s a tip posted by someone on the VB-DATA list.

It’s already come in handy …</description>




RSS Readers / using RSS

There are a number of applications available to read RSS feeds. You can scare up dozens of choices by searching for “RSS reader”. The basic functionality you’re getting is formatting of the XML feed, but a decent reader will allow you to set up a number of feeds and keep track of the items you’ve read.

Here’s a screen shot from SharpReader, my current favorite. One of the nice features about SharpReader is that you can set it up to poll for new stories and notify you when they’re posted with a little IM-like box.

Who’s got feeds?

As I mentioned earlier, there’s a very good chance these days that your favorite web site will have an RSS page. Here are a few popular sites that you may want to monitor to help you stay abreast of development technologies.

Whaddya got under the hood?

Just in cast you’re wondering what makes AppDev go, it’s powered by a Content Management System (CMS) called PostNuke. I’ve been using PostNuke for several years now as a development portal. The framework is easy to set up, easy to customize, and easy to administer, and it runs on virtually any hosted server. If you need to set up a web site of any kind, I recommend you take a look — it’s worth a quick eval.

[edit: this post is out of date, but it’s interesting as an archival snapshot]

Tip: building connection strings from scratch

Here’s a tip posted by someone on the VB-DATA list. It’s already come in handy for me once or twice. Click “read more” for details….—–Original Message—–
From: Discussion for Microsoft Visual Basic Data Access
Sent: Monday, August 26, 2002 12:13 PM

Subject: Re: Web Site for OLEDB connection strings

Just to add to the URL that others have posted….

The method I use to get a connectionstring is to create an empty file with the file extension, “UDL”

Then I open the file, which launches the “Data Link properties” dialog I select the Provider I want to use, and al the criteria (servername, etc), then hit OK

Then I open the file in Notepad to find one conenction string..ready for copying and pasting into the source editor/config file/whatever

See also:

Common connection strings

Running the gamut of testing tools

I have been working recently to introduce JUnit and NUnit to my development shop. My findings are pretty interesting. My Java developers jumped all over JUnit, and my .Net developers were substantially less enthusiastic about NUnit.

I’ve also done some work with NUnit myself, and have found that it’s a pretty interesting platform — in my case not for unit testing as much as for integration and acceptance testing. In fact, I’ve wondered if “JINtegration” and “NIntegration” can be far behind.

Hire Good People — Not Good Resumes

In my years hiring developers, I’ve had the chance to see thirty or so people come on board and grow with me in one organization or another. These people have ranged from fresh out of school to seasoned veterans. The single greatest impression I’m left with after all this is that you don’t always get the best developers by going after people with years of
experience.There are a lot of pretty standard practices in hiring developers. Recruiting firms make a living out of classifying people and finding fits for them.

Ask yourself how many of these maxims you have relied upon or adhered to in hiring over the year.

* Hire someone with experience in the technology you use.
* Don’t get someone fresh out of school unless you can take a great deal of time to train them.
* Pay should increase with experience.
* If you want to build a high-powered team quickly, hire experienced developers.

Now, go back and reflect on how some individual hires have worked out with respect to these guidelines. Here are some of my thoughts.

When it comes to the technology you use, you have to be ready to give a little. I’m not ready to suggest that you hire a Cobol guy for a C++ job, because the gulf is pretty wide there. But if I want a database developer to work in Oracle, and I find a guy who understands SQL Server, I’ll consider him pretty strongly, especially if I think he really *understands* SQL Server and isn’t just working out of the books.

There’s a stigma about getting folks right out of school, and it’s
understandable in a lot of cases. After all, when I came out of school, I still didn’t know what I wanted to be when I grerw up. 😉 Some people I’ve met, however, have been damn sharp – straight out of school. I’m not suggesting you let your guard down on this point, but make sure you keep an open mind.

There is also a pretty common practice to just roll over on pay increases with experience. I’m pretty sure that not everyone’s experiences are the same as they move through their carreers, yet they seem to all end up the same — “C++ programmer with 5 years’ experience”. I like to try to use the interview to tell whether this experience was rich or whether the guy was just sucking up oxygen.

Finally, I want to talk about building a team out of high-powered, experienced developers. It’s probably about the worst idea you could have. Get a bunch of “experienced” developers together, and unless you’re real lucky, all you’ll get is a bunch of infighting. If you want to build a team as quickly as possible, look for good attitudes, because everyone is going to have to learn a ton of stuff as things evolve, and there isn’t a lot of room for egos.