Why Microsoft Stil Matters

OK, Microsoft, nearly everyone’s favorite technology whipping boy, has been getting some bad press (too numerous to settle on any one or two), bad news (IBM to go Linux for desktops; OSS databases gaining) and the random bad lawsuit.

Microsoft is feeling the heat from Linux and other OSS, in particular. Not only are Asian countries uniting behind a Linux flavor, but MS has lost Austin, Texas and Israel as MS Office clients.

It seems that every day there is a story that trumpets a MS loss at the hands of either Linux or some other OSS product (noteably, OpenOffice).

You can tell that it’s hurting MS, because it commissioned a study that it is now saying that Windows is cheaper and faster than Linux. OK…

Well, let’s take a step back: The so-called facts (MS paid for study; it’s slanted in their favor, as well) in the study really aren’t that important. What’s important is that MS needed to make the study in the first place and then publish same to much fanfare.

This means Linux is and issue for MS.

Telling.

So, while MS stock is still up and doesn’t look poised to dive, it’s getting hit with some pretty heavy punches. And the company’s current ace in the hole – Longhorn, the latest “bet the company” product (an OS) is a ways off. Gartner just published a report that Information Week sums up as the following:

Gartner: Longhorn Delays Will Affect Windows Upgrades; The IT advisory firm expects the operating system to be released between late 2006 and mid-2008, but that the release could be delayed even more.

– InformationWeek Published 12/11/03

That’s not good news for MS. Two to four years? How many Internet Years is that? A zillion?

But we are talking about MS. Linux may hurt MS; OSS may actually pull MS off its monopoly pedestal.

But it won’t kill MS – and if MS did die, that would not be a good thing for tech overall.

Why?

Because MS still matters:

  • MS makes great tools: It’s like I get paid for saying this. But it’s true – they do. Visual Studio, MS SQL Server (a user-friendly face to essentially a Sybase DB core), MS Office with its tight integration. Outlook – the scourge of many anti-Billies – is a killer app. Over the years, I’ve read many articles by tech folk who hate MS but admit that they won’t switch off Windows until they can get an Outlook clone. (With Apple and Ximian, this is now possible). Outlook is a tool. The standard others copy (without the security holes, agreed).
  • MS has $$$ in the bank: Never underestimate deep pockets. It buried Netscape, eclipsed Apple’s Quicktime and RealNetworks audio/video (yep, one of the lawsuits), has done battle with Nintendo and Sony in the game box war, and has a reputation for buying what it cannot kill…and then killing it, if that suits the suits.
  • MS has been amazingly wrong before and recovered: Remember the whole MS damn near missing the Internet fiasco? Bill Gates turned around a big-ass company in short time to address a company-demise threat. He or his henchmen could well do the same against the new nemesis: OSS.
  • MS has a bunch of smart people: For every Ballmer jumping around like a Ritalin-deprived monkey, there are a hundred pretty much normal folks looking at stuff and making smart decisions. Yes, they are normal folks. Just smarter than normal, in different ways as needed for their job. For example, take Robert Scoble, the Longhorn evangelist. He’s promoting the hell out of Longhorn, and putting a good face on MS (putting a face/name on MS) with his Scobleizer Weblog. I don’t know if he’s a smart guy, a good programmer, a good businessman…but everyone reads him. Free publicity, and he freely dings MS and touts its strengths. Even if he is a schmuck, this is smart. Be it Gates/Ballmer/Scoble/someone else, somebody has made this happen and/or realized a good thing when it happened. Smart stuff.
  • MS is starting to “get it”: Witness Robert Scoble, above. Embrace a tool that works and make it work to your advantage. While I personally believe Scoble believes what he writes and all that, it doesn’t matter: It’s a brilliant move, and generates lots of (overall) friendly buzz for MS.
  • MS is everywhere and integrated: I guess this is two points (installed base and integration), but – to me – they are tightly…integrated. MS everywhere: Today, this is a given. Get over it. This leads to the integration issue: At the simplest level, would you install Word and Lotus 123 instead of Word and Excel? Uh, no. The integration is powerful; the bundling (even if illegal) is great. And if you are an all-MS shop, life (in some ways) is easier: Same help desks, same behavior in apps, knowledge that if you have MS backend and MS frontend all should be relatively OK…that’s the stuff that keeps CEO sleeping soundly every night. Damn the cost; just don’t give me any surprises! (Such as, “uh, the free OSS product we want to use doesn’t support [pick feature] in [pick application]”. With MS, the integration points are spelled out and there is little (OK – less) guessing.
  • MSCE: Yeah, certification can be a good thing and all that, but … whatever. However, if you hire a MSCE, this droid will be able to do roughly 75% of the stuff you need on your all-MS system (front and back ends). Not the same for OSS. Sure, I can do a LAMP app. So, I need to know: Linux, Apache, mySQL (or Postgres) and PHP and/or Perl. These are FOUR different items. The MS solution – Windows Server vX.x, IIS, SQL Server, ASP – are all integrated. Same types of tools (learn one, can figger out the others) and tight hooks. Like it or not, the concept is compelling. One dude can handle this; folks who are mySQL savvy don’t necessarily grok Postgres, for example. Same type of tool (DB), but different in many ways. MS owns integration, for the most part. Again, CEOs can sleep.
  • TCO: For those unclear, TCO = total cost of ownership. While Linux and other OSS tools are generally considered to have a low TCO – because they are either free or very low cost – there are the other intangibles (support needed, support available, admin skillsets etc). Depending on your politics, TCO for MS can be lower or higher than for OSS. Let’s leave that as that – the issue is that the damn bean counters want hard numbers, and MS has them. OSS doesn’t (because, for one reason, the OSS replacement for MS is a bunch of apps etc, not one company’s unified offerings). While OSS may well have a lower TCO, well…prove it: That’s what CEOs will say. They want the guarantee that what they sign off on is what the cost will be. Sure, MS is frickin’ expensive, but it’s understood what you’ll get, what’ll take to maintain it and so on. With OSS, you get low, low upfront costs…but…ah, the “but…” Who knows if you’ll need to use expensive middleware to connect with an old Exhange server, or hire an OSS admin on top of your NT admins and so on. That’s the crap the suits hate – the “surprise!” costs. They’d rather pay up the nose up front and be able to budget this. This is huge, and why OSS gets put aside by management types. It doesn’t work the way they want – and they are the ones paying for it, so…guess who often wins?
  • Personnel: This is related to the preceding point. For companies looking to move to OSS from a MS environment, understand that it’ll not be a MS-today, MS-Free-tomorrow situation. There will either be a (potentially lengthy) migration period or an expected perpetual dual-environment situation. Usually, MS personnel (NT admins, say) are not qualified to handle the OSS needs. So, as part of the transition/melding, personnel have to be added or retrained. In either case, this is expensive. People are way more expensive than hardware/software. This is just a reality. If you save $XX on OSS but have to hire another body to help support it, well, you just spent way over $XX in all likelihood. This is part of the TCO equation many overlook. There is also the personnel friction factor – the NT types won’t like this new-fangled stuff (as OSS folks wouldn’t like being forced to coexist with/maintain MS ware.) You’re going to ostracize or lose some employees. Again, this is expensive. Bean counters hate this…

Baby It’s Cold Out There!

After a fairly mild December, January has come in with a vengance here in the Chicago area.

A dump of ~ 8 inches of snow Sunday, and today bitter cold: Wind chills currently at about -30.

The house is making all its contracting wood noises, and some are damn loud.

Is it summer yet??

Happy Birthday GNU

As noted by Dan Gillmor, today is the 20th Anniversary of the founding of GNU (Gnu’s Not Unix).

Dan pretty much sums up my thoughts on all this:

  • GNU’s founder – Richard M. Stallman (RMS) – is not to everyone’s taste.
  • RMS’ message – software wants to be free – is even a little hard for Linux kernel coders to take.
  • Agree with RMS or not, the world would be much poorer without the benefits we’ve all reaped thanks to the founding of GNU, the start of the free/open-source software movement. Linux, Postgres, PHP, Apache…

Happy B-Day, indeed.

The Next Killer App

The thought struck me about a year ago – and then I promptly filed it in my mental recycle bin – but I have ressurected some thoughts about the next killer app: A tool that can do for photos what tools such as Word, Perl & Python do for text strings.

Think about it – Google has a nice image search, but it is incredibly weak. All picutures searched are really text searches: Looking at the image name, a description (where available) or the page context where the image is embedded.

Image search has not progressed beyond associated text searches (and, therefore, storage and/or organization of same is done by associated text means).

What I’m envsioning – and, no I’ve no idea of how to do this – is a tool that can catalog/identify a picture by its contents: It will be able to determine that a photo/graphic is an image of a vase, even if the image is on a page devoted to auto parts and is named doggie.jpg.

The implications for such a tool are enormous, not the least of which are the following:

  • Image searches can be supplemented by textural tools – as today – but the primary search should be of the image itself. So a search for “vase” will find the doggie.jpg image.
  • This means that images can be cataloged in some manner, and stored with this image-specific information. With this type of information – much like text information in a database – an image can, for example, resided anywhere on a user’s hard drive but be part of a “Family Pictures” album, which contains pictures from all over the hard drive. The organization will handled by the image metadata (potentially databased) and not by the system file stucture (i.e., no /my_pictures/family_pictures)
  • This metadata will allow many-to-many relationships between images/grouping heirarchies. For example, there is no need to have a copy of the “mydog.jpg” for it to be included in two galleries (mypets and family_pictures, for example). While this can be handled with a database and some logic today – by assigning this image to two different buckets – the metadata will create the associations seamlessly.
  • As the software improves, it can be made to learn, much like a Baysian spam filter. It could learn that I don’t want non-jpg images in certain galleries and so on.

OK, even beyond the tough-nut-to-crack of how to figure out what an image is by the image itself there are other obstacles.

  • Text is text – the only weirdness is different alphabets. With Unicode, some overhead but doable. But there is no single Unicode for images: A jpeg is a vastly different beast than a vector graphic. And what of 2-D image vs. a 3-D one?
  • If you treat an animated GIF or Flash graphic as a single graphic (do you? good question), we’ve added another dimension to the image: time. Again, how to capture and represent that?
  • Following from above, MPEG, MOV and so on are essentially images with a time element. Will these be included in the tools to analyze graphics?
  • How is a picture analyzed to get it’s data and metadata? Is the image’s text or binary code analyzed, or is the image somehow scanned to get its properties?
  • How does this handle ASCII text? While a vestige of the text-only Web/Internet, it’s art that it actually text. And it makes no sense as text; how about as a text-based graphic?
  • Will there emerge some standard representational container for image? I.e., an image is cataloged by color depth, type, image subject, dimensions (2-4) and so on? Probably, but this will probably only emerge after a couple of methods of gathering and storing the data have been in use for some time, and will lead to some sort of standards war, like the one DVD read/write format issues.
  • What will the atomicity of the data be? For example, a picture of a football player. Will the data be able to see just the football player (potentially the location), or will it also recognize and store that this image has two arm, two legs, a football, and the jersey number “6”? These would be powerful filters, but tough to do, I assume.

I know little about processing of images – even the basics – so I could be barking up a dangerous tree, or I could be wishing for something that already, in some form, exists.

I know stenography is a well-studied field, and I would expect that a lot of what I’m seeing to be related to work in this field. However – again – I know little about it, so I may be preaching to the choir.

I guess that I’m just getting better and better at search/text manipulation and all that, and I’m getting to better understand what it possible and (currently) is not. This all just lights up my mental bulb, saying that the next avenue to work on in a similar manner is non-text data: graphics.

Just wait ’till it comes. It’ll rock your world.

And you read it here first….

OSMS? (Open Source Microsoft?)

There was an interesting article in IT Manager’s Journal published yesterday, talking about MS’s Longhorn and Linux/OSS.

While there are many quotable quotations in this article – for example, the author speculates that Longhorn will never ship – here is the paragraph that got me thinking:

But Microsoft, with $50 billion in cash, is hardly dead. Strategically it may have painted itself into a corner by relentlessly pursuing its traditional high-margin model: a weekend Inquirer article points out that there is almost nothing about the company’s software quality, business practices, service, marketing, or pricing that have made friends of its customers. Lacking its monopoly position, a lot of customers would just as soon do without flawed software, non-existent support and increasingly-frequent, enterprise-wide, virus-induced shutdowns, especially at Microsoft’s astronomical prices.

Chris Gulker

It was interesting to contemplate this stripped-to-the-basics message. While things were different in the past (sorta), today’s Microsoft has only its monopoly to thank for its past (war chest) and present success (continued large sales due to upgrades and so on).

However, this article missed a couple of key points:

  • For Microsoft, Windows/Longhorn is a means, not an end: MS makes profits by tying highly profitable products such as Office, Visual Studio, SQL & Exchange Servers to the OS. These products are the end. So while the battlefield may be OS – Window/Longhorn vs. Linux, for example – the spoils of the war, for MS, are the apps that sit on top of the OS.
  • MS makes great tools: While the company is known for its embrace and destroy tactics, the few products it has actually done itself are best described as tools: Visual Studio, SQL Server (really a nice suite of tools on top of Sybase code) and so on.

So what exactly does this mean for this article and for MS vs. OSS in general?

It means that MS has some wiggle room. MS could leverage its tools skills to enter the OSS market in a way that’s completely separate from their current proprietary offerings. So it could be spun as an expansion, not a concession.

An example I see as a prime MS target is the Postgres database. This is a database that is far superior to the far more popular mySQL database; Postgres is really on par with Oracle in terms of functionality and ANSI/ACID compliance and so on than mySQL, that’s for sure.

The new UnitedLinux distribution is supposed to come with Postgres as the default database, not mySQL (mainly because of the licenses under which each is distrubuted – actually, the mySQL developer tools are the issue, I think).

Now, currently mySQL has many more and far superior tools than Postgres – so here’s a wide open market for MS to come in, build a low-cost proprietary tool as an “Enterprise Manager” for Postgres. As long as MS doesn’t…well, act like MS and get their undies in a knot over licensing agreements (cost per seat, single-user license blah blah), they could shortly own the lower-end (non-Oracle/DB2) *nix market, without having to touch the actual database code. Obviously, if they were smart they would do an IBM and fund and support the Postgres movement…

And this would not really cut into their basic offerings – yes, some would abandon SQL Server and do Linux/Postgres instead, but right now the market is starting to shift, why not be there to establish a beachhead? Hell, I’d pay $100 for a good, solid Postgres front end (hint: Should be versions for Linux and Windoze; client may differ from server OS).

It’s an interesting thought, and a way for MS to test the OSS waters without really admitting that they are getting cold feet on Windows/Longhorn.

And this would benefit MS in two other ways, if done correctly:

  • Would make MS a little more friendly to the OSS community (though many would consider this a threat, as well). If done correctly, MS could keep the tool proprietary (but low cost), but have MS developers dedicated to help Postgres efforts (a la RedHat/IBM with Linux). It would be in MS’s best interest, as well.
  • Would give this area of MS a good look at OSS, and any learning experience is a good thing. Might help them in other areas, as well.

Will this happen? I doubt it, but I still think this would be a brilliant move.

And dammit, I want a good Postgres tool! Command line is fine, but sometimes it’s nice to have an IDE.

Touch of Gray….

OK, I live in Chicago, and the best radio station in town – in my mind, in the country – for my rock and roll taste is WXRT.

I’ve been listening to this station for over 25 years, beginning when they were only a part-time station, leasing air time from a Spanish station.

WXRT bills themselves as “Chicago’s Finest Rock,” and they have always had a good mix of the old, current and cutting edge. And stuff that no one else would play.

Whatever, they are a rock and roll institution in Chicago, like them or not.

Today – the day of New Year’s Eve – they have a poll on their site (at 1:34 CST):

How do you plan on spending your New Year's Eve?


Choice Votes
==================== ====
Party Like it's 2004 495

At home with friends 502

Asleep 512

Yep, we is gettin’ old…

The revolution will not be televised…it will be planned/lobbied for on The Hill by AARP.

* Big Sigh *

Just Step Away From the Almanac!

The FBI is warning police nationwide to be alert for people carrying almanacs, cautioning that the popular reference books covering everything from abbreviations to weather trends could be used for terrorist planning….The FBI noted that use of almanacs or maps may be innocent, “the product of legitimate recreational or commercial activities.” But it warned that when combined with suspicious behavior — such as apparent surveillance — a person with an almanac “may point to possible terrorist planning.”

  — Associated Press, Dec. 29, 2003

Have we all lost our minds?

What’s next? You’ll need a passport to use an encyclopedia in a library (especially if you use the encyclopedia in a suspicious manner….)? A license to carry a concealed tour map? RFID tags in cameras and film?

We are such boneheads sometimes…almanacs as WMD (Weapons of Mass Direction[s] )…

More mySQL Gripes

While mySQL does have a lot going for it, the dearth of some basic functionalities continues to make me nuts – which is why I use other databases (notably Postgres) when I’m able.

When building Web sites, however, mySQL is a necessity, as it’s the only DB you can really get hosted on Linux sites.

But…augh!!! Today’s issue: Defaults and dates.

On just about all databases I’ve worked with, you can set defaults on date fields (even Access, fer christ’s sake!). For example, let’s use this Postgres table:


create table user_profile (

user_profile_id serial primary key,

first_name varchar(255),

last_name varchar(255),

email varchar(255),

user_name varchar(255),

user_password varchar(10),

date_added timestamp default now(),

date_modified timestamp default now(),

date_deleted timestamp default null);

Note how the date_added and date_modified fields default to now(): So, upon profile creation, each is automagically set to the time of creation. Date_deleted, of course, is nulled out – will be filled out when necessary.

But you can’t do this in mySQL – you can only default date fields if you use the timestamp data type. This has the following effects:

  • Most (all?) tools – including the command line – display timestamp without formatting (20031230161304) and datestamp formatted (2003-12-30 16:13:04). Why two different views of essentially the same data?
  • The first timestamp column will behave differently from second and subsequent timestamp columns in a given table. Timestamp is designed to essentially give a date modified time stamp – any insert or updates to row will increment the timestamp but only if it’s the first timestamp column. That’s wacky.

RE: The second point. Assume the following table (note the two timestamp columns):


mysql> describe test;

+——-+—————+——+—–+———+——-+

| Field | Type | Null | Key | Default | Extra |

+——-+—————+——+—–+———+——-+

| d1 | datetime | YES | | NULL | |

| d2 | timestamp(14) | YES | | NULL | |

| name | varchar(10) | YES | | NULL | |

| d3 | timestamp(14) | YES | | NULL | |

+——-+—————+——+—–+———+——-+

If I insert into this table – say, add only name and d1 (datetime type; use now() function) values – here is what we will see:


+———————+—————-+————+—————-+

| d1 | d2 | name | d3 |

+———————+—————-+————+—————-+

| 2003-12-30 16:22:51 | 20031230162251 | Geistlinge | 00000000000000 |

+———————+—————-+————+—————-+

So, the first timestamp column defaults to current time; the second one just sits there. Ditto for updates. And god forbid if I just reorganize my columns – but keep the same names and types – suddenly, another column may begin timestamping instead of the other. Grrr…

And this second timestamp field defaults to 00000000000, not NULL.

Ungood.

Another example of why I bash mySQL.

Deep breath.

Currently Reading…

I’m currently in the midst of reading Eric S. Raymond’s The Art of Unix Programming.

Highly recommended.

The book is not a Unix programming book, and it’s not a philosphy book.

It’s both…and neither.

Good read; Joel Spolsky has an excellent and insightful review of this book, so I won’t clog up the Blogsphere with my own idiotic ramblings and ruminations (wait! why should today be different?).

It’s an interest book for what it says about Unix history, the art of programming – in general – and the art of programming in Unix, specifically.

As I’m not a seasoned Unix hacker, it was good to read some of the tenents Raymond puts forth (he did not invent them; he’s just documenting them).

One of the more interesting ones – to me – was the concept that a routine/function or whatever should succeed silently. This is the opposite of what most users would expect – users want confirmation.

Programmers want silence, lack of clutter – only display when something goes wrong.

Which made me feel a little better (and smarter): I had just written a bunch of PHP functions and my decision was to return FALSE unless there was an error (then an error message will return). In this way, the program just keeps chugging along if all is well without any success echoes.

This is better for the program, but somewhat counter-intuitive: Return FALSE for a SUCCESS?

This book says that’s a good thing.

Wow. I got something right.

Blogging into 2004

I’m not one for New Years’ resolutions or stuff like that, but the end of the year is a good marker to start to look at things and go either, “Hmmm….this should have been…” or “Hmm…maybe next year….”

And so on.

Without further ado: In this coming year, I’m going to develop a blogging tool to publish my blog (which may or may not stay in this spot).

Why I’m doing this:

  • To a large extent, just for the hell of it: While there are limitations to what I have now (see below), there are a lot of options out there – low- and no-cost – that I could select if I were really desperate for change. But I’d rather trying rolling my own so I can learn something and customize it in every way.
  • To make the blog dynamic: Right now I’m using Blogger, which has been great because it’s free. It’s been a drag, however, because Blogger owns the database (I’m not really complaining; it’s free, recall), so a lot of the stuff I’d like to do I can’t. I.e., the site could be more dynamic, but – because I can’t get to the database, I’m pretty limited in my tweaks (I’ve done a bunch of tweaks already, however).
  • To add features: While blogging tools offer options – take MT (Moveable Type) for an example – the integration is not complete and, well, true unless it’s one codebase. I’ve build MT modules (locally), such as a blogroll tool. Works great. But the integration is not fluid – if I update MT, for example, I have to re-hack the MT code to install my modules etc.

That’s the short list; the long list is – as expected – longer. But I won’t bore any hapless readers.

However, one of the interesting decisions to make up front is the following – Where does the Blog’s logic reside. For example:

  • Build blog and components locally and push HTML only to the public site (examples: Tim Bray’s Ongoing (emacs & scripts) or the Scobleizer Weblog (Radio). Note the lack of search.
  • Have the database reside on the public site (examples: Pick any MT site). Usually a mySQL database on the Web server, not local.
  • Have the database reside on the local site but replicate to the public site. I’m not sure of examples here, but – for example – it’d be possible to have a complete site local but replicate all/some of the local database to the public site for dynamic use there.
  • What degree of dynamic is desired? Should I write out a lot of pages (a la MT and Blogger), or leave the site basically a template that is created when user calls it? (Examples of the latter are a large percentage of current Web sites – Amazon, Slashdot and so on.)

Interesting questions; I have to figure out what it best for me and the site.

While my site should get about 3 hits a year, I still want to build it in an extensible, flexible and robust manner, just for the hell of it. Anyone can build a crappy blogging tool; I’d like to make one that is at least useful to me and has the potential of holding up if I suddenly became popular.

Why not do it right?

But what is right for this tool/for me?

Aye, there’s the rub…