Blog by Sumana Harihareswara, Changeset founder

28 Nov 2006, 16:04 p.m.

Tech Concerns Great And Small

Hi, reader. I wrote this in 2006 and it's now more than five years old. So it may be very out of date; the world, and I, have changed a lot since I wrote it! I'm keeping this up for historical archive purposes, but the me of today may 100% disagree with what I said then. I rarely edit posts after publishing them, but if I do, I usually leave a note in italics to mark the edit and the reason. If this post is particularly offensive or breaches someone's privacy, please contact me.

David Stutz's essay on commoditization, software platforms, and the law of "the conservation of attractive profits" reminds me: software is profitable when it is flawed. This is because flawed software allows you to charge for bugfixes and new features, and because flawed software is an indication that the state of the art does not yet solve customers' needs, so they are hungry and it's a seller's market.

Today I've been working with Microsoft SQL Server Management Studio Express for the first time. This is actually my first time getting my hands dirty with any of the Microsoft database management applications; I've used phpMyAdmin to talk to a MySQL database, but that's all. Microsoft has a reputation for doing exactly what Stutz is talking about. Create a barely adequate product and get people using it, charge them for upgrades, and create a strong network effect barring market entry. Turn your technology into the platform that other people build on, by default. Collect rent.

But my recent experiences with IIS, SQL Server, and other grown-up-ish Microsoft technologies are cooling my old Slashdottian zealotry. I'm like Randy Waterhouse reluctantly recommending Windows NT to his oral surgeon. Troubleshooting in Windows involves undocumented API changes, wizards that improperly wiz, and unchecked-by-default checkboxes nested four deep in configuration dialogs. But Unix troubleshooting involves poorly documented application changes, path and permission trip-ups, and dependency hell spanning kernel, utilities, and the million micro-layer tools that connect it all. I don't know which I prefer, and that's weird to me.

I haven't gathered enough data yet to tell whether I prefer phpMyAdmin to SQL Server Management Studio, although a few inherent advantages of desktop-based apps over web apps might prevail here (see the last few paragraphs of my boss's lament).

Pop quiz: does the CREATE TABLE query that makes a table with a composite primary key (a tuple in this case) include the crucial word COMPOSITE in it anywhere? The answer is no! In case you're flipping through Ben Forta's SAMS book Teach Yourself SQL in 10 Minutes, Second Edition, you might find this useful:

CREATE TABLE OrderItems
(
	order_num	INTEGER		NOT NULL References Orders(order_num),
	order_item	INTEGER		NOT NULL,
	prod_id		CHAR(10)	NOT NULL References Products(prod_id),
	quantity	INTEGER		NOT NULL,
	item_price	MONEY	NOT NULL
PRIMARY KEY (order_num, order_item)
);

That might only work in SQL Server Management Studio, though.

I use various applications that call themselves "managers." SQL Server Management Studio, Adobe Download Manager, Mozilla's Profile Manager, what have you. They aggregate and maintain functionality and they're useful. But their names make it sound as though "managing" software is just a matter of checkboxes in the here and now, and not messy strategizing towards an unseeable horizon.