podcasting

Audio Only, Please

June 20, 2007 7:51:54.920

Scoble has posted another interview I'd love to listen to, but have no interest in watching video for. Can we have an mp3 stream in addition to the video feed, please?

Technorati Tags: ,

 Share Tweet This

cst

Incremental Progress

June 20, 2007 9:45:26.508

A complaint I've heard a lot is that we have promised any number of grand new plans (Pollock/Widgetry being one example), many of them have taken too long to deliver - or worse, have simply failed to materialize.

Ironically enough, given that we are supposed to be the experts in Smalltalk development, we've historically followed a very "heavy" development process, and allowed projects to drive forward without incremental deliveries along the way. What that's done is make for disappointing deliveries on any number of levels - projects that never ship, or that ship slowly and incompletely.

We recognized that this had become a problem, and we've been changing our internal development process to be more lightweight and - dare I say it - agile. Along the way we've modified our product roadmap accordingly. After I announced that we would be supporting Seaside yesterday, I received a number of emails that could be summarized as follows:

"Oh great, another new direction you won't deliver on"

As painful as that was to receive, it's a message I understand. We have spent too many years telling you how great Pollock was going to be, and too many years neglecting obvious flaws elsewhere in the product. One change in the roadmap you may have noticed is that it's smaller. There's a reason for that: I'd rather promise things I know we can deliver than push out a huge list of things we can't.

What does that mean you'll see from us in the short term? We are releasing ObjectStudio 8 in August. At the same time, we will release a service pack for VisualWorks. That will probably be a download of updated parcels (and new Mac VMs - yes, those are still being pounded into shape). I'll be getting some scheduling information on the major areas of interest:

  • Internationalization
  • Seaside
  • Improved Tools
  • Deployment

over the next few days, and we will then have a better idea as to when we can push out the next major release after ObjectStudio 8. Between now and then, additional service packs are quite likely, and in line with the idea of incremental development and delivery. I'll also have more details on those admittedly vague "major areas" - for example, "Improved Tools" will get more details.

What won't you see from us? You won't see grandiose visions of "the next big thing" promised for delivery N years from now. You'll see incremental, step-wise improvements - which means that you can expect initial support for Seaside in months, with incremental improvements in that direction on an ongoing basis. The same will hold for the rest of the roadmap - you'll see incremental improvements delivered on a regular, ongoing basis - and I expect you to hold us to that.

Technorati Tags:

 Share Tweet This

cst

Follow on Seaside Thoughts

June 20, 2007 10:07:32.042

This came up in an email I got based on yesterday's post, but I would like to air this publicly - we don't intend to fork Seaside off and make a proprietary version. Seaside itself is portable between Smalltalk dialects, and we intend to take advantage of that fact. As well - the persistence solution we have in mind is GLORP, which is also portable across Smalltalk dialects. So - we intend to actively work with the community of Seaside develeopers (most of whom work in Squeak) to push Seaside forward. Obviously, we believe that Cincom Smalltalk will be the best and most scalable place to use Seaside - but we intend to work with the community on this one.

Michael Lucas-Smith is taking the technical lead on this project, so if you work in Seaside now, and would like to get involved, get in touch with him. This isn't going to be a "go dark" project for Cincom.

Seaside

Technorati Tags: ,

 Share Tweet This

web

It's not all online

June 20, 2007 12:20:17.198

Doc Searls points to Steve Lewis, who reminds us that as good as the various web resources we have are, there's still a ton of material out there that has never been examined, much less digitized. For instance:

Indeed, much of the history of Iraq and its antecedents ­ as of much of the Mid-East, North Africa, and the Balkans ­ stills lays buried amongst the millions of pre-1923 Ottoman documents stored in the Turkish national archives in Istanbul and Ankara.

That's not even the half of it, apparently. I'm reading "Osman's Dream", by Caroline Finkel - and she notes that those Turkish archives are becoming less accessible even within Turkey. Not for political reasons, simply due to language barriers. From her foreword:

The past is truly another country in Turkey, whose citizens have been deprived of easy access to the literary and historical works of previous eras by the change in alphabet in 1928 from Arabic script to the Roman alphabet familiar to most of the western world. At the same time, an ongoing programme to make the vocabulary more Turkish is expunging words of Arabic and Persian derivation - the other two components of the rich amalgam that was the Ottoman tongue, today in danger of becoming as 'dead' as Latin. On the other hand, works from the Ottoman centuries are now being published in modern script with simplified language, enabling modern readers to gain some understanding of what went before. The situation would otherwise be dire; imagine an English literary canon which lacked anything written before the 1930s!

As much of a "triumphalist" as I've been for things like Wikipedia, the true scholar's work is hardly obsolete.

Technorati Tags: ,

 Share Tweet This

screencast

Smalltalk Daily 6/20/07: Uploading Files in Web Toolkit Apps

June 20, 2007 13:36:12.850

On today's Smalltalk Daily, we look at how to use a standard HTML file upload component with a Web Toolkit servlet.

Technorati Tags: ,

 Share Tweet This

events

ObjectStudio 8 in Zurich

June 20, 2007 18:08:21.455

We announced a series of ObjectStudio 8 seminars in Europe recently; the first one was held in Zurich today. So - I've posted some photos from the event.

Technorati Tags: , ,

 Share Tweet This

BottomFeeder

More BottomFeeder Work

June 21, 2007 12:09:50.582

I've been quiet this morning - working on BottomFeeder keyboard handling. Looks like some the overrides I've added need to be addressed as well - the joy of moving an application forward from release to release :)

Technorati Tags:

 Share Tweet This

screencast

Smalltalk Daily 6/21/07: Using Subcanvases

June 21, 2007 12:42:11.975

On today's Smalltalk Daily, we take a look at using Subcanvases - the basics.

Technorati Tags: ,

 Share Tweet This

music

DRM Free music sells better - go figure

June 21, 2007 13:21:33.074

Wow - DRM free music sells better, bringing more money to industry coffers. It's like the VCR fight all over again:

Early sales indicate that DRM-free music is noticeably more popular than DRMed music, EMI senior VP Lauren Berkowitz recently told Bloomberg. The world's third-largest music label began selling its music without copyright protections last month through Apple's iTunes Store and reports back that sales have been "good."

Follow the link to Ars Technica for details - the uptick seems significant. So the question is, how many facts have to die before the RIAA and MPAA get a clue?

Technorati Tags: ,

 Share Tweet This

cst

Cincom Smalltalk UI/Tools Direction

June 21, 2007 14:05:25.236

We have no plans at this point to deprecate the existing User Interface tools, or the existing UI framework. We realize that with the length of time it's taken to get Widgetry to production, the policy of doing only minimal fixes to the older tools and UI has been a problem for our customers. Replacing the existing tools with Widgetry versions would amount to further forcing our customers to stand still for the next year or two while that happened. So we have the following focus for Widgetry, Wrapper, and tools:

  1. On Widgetry, we will be looking at the ability to combine both frameworks. This may mean embedding Wrapper canvases in a Widgetry UI, the reverse, or both. That is under investigation, and we are looking for feedback from our user community on the best path forward here
  2. Given how long Widgetry has been under development, and the customer investments in the existing frameworks and tools, we don't believe that a wholesale replacement of the existing tools is in anyone's best interest right now. What you'll see is incremental improvements to the existing tools, including the UI Painter and the associated widget set.
  3. We are supporting Widgetry, but we look at the current release as a first pass, intended primarily to garner feedback from early adopters. We do not expect mature projects to migrate to Widgetry at this point in time, and we don't want to pressure them to do so. We do expect the existing early adopters to send us feedback on what's good, what's bad, and what we need to improve.

Technorati Tags: ,

 Share Tweet This

humor

Software Development Paradigms

June 21, 2007 17:32:46.560

Forget XP, Scrum, Waterfall, etc - here's how software development really works :)

Technorati Tags:

 Share Tweet This

cst

ObjectStudio 8 Seminars: Photo Gallery

June 21, 2007 18:08:56.685

I wasn't able to attend the ObjectStudio 8 seminars in Switzerland and Germany, but I have posted a photo gallery from the events. Enjoy.

Technorati Tags: , ,

 Share Tweet This

screencast

Smalltalk Daily 6/22/07: Keyboard Bindings in Widgets

June 22, 2007 8:17:16.329

On today's Smalltalk Daily, we take a look at customizing the keyboard handling for a particular widget in an application - using BottomFeeder and the DataSet as an example.

Technorati Tags: , ,

 Share Tweet This

podcast

Industry Misinterpretations Episode 41: Getting Answers

June 22, 2007 8:28:45.416

This week's episode is an interview with Liz Cohen of Answers.com. I spoke to Liz on June 13th, and we talked about what makes Answers.com different from other search engines - which you can see via this Smalltalk search - scroll down to the "related blogs". It was a fun talk, and I added a new information site to my list.

Technorati Tags: search engines, information

Enclosures:
[http://www.cincomsmalltalk.com/audio/2007/industry_misinterpretations-06-22-07.mp3 ( Size: 6777023 )]

 Share Tweet This

travel

Heading to Boston

June 22, 2007 9:19:35.403

I'm traveling up to Boston this weekend - my wife's brother lives up there, and we're off for a quick visit. It's a short trip - my daughter has more summer activities lined up than I know what to do with, and that all starts Monday.

 Share Tweet This

travel

Fun in Boston

June 22, 2007 23:41:09.509

We arrived in Boston this afternoon, and after my brother in law served us lunch - homemade pizza and soup - we headed over to the Museum of Fine Arts. We got there late, so only part of it was open. We were able to see the Asian collection, the American (pre-Columbian) collection, the Italian Renaissance collection, and the middle eastern collection. In theory, I wasn't supposed to take any pictures. However, a camera phone is pretty handy :)

That's a Korean Reliquary set, used in (I think) Buddhist ceremonies. Next, I snapped this shot of a Glazed Italian Renaissance piece:

Finally, a Buddha from the Asian collection:

There's a lot we didn't see - it's probably a whole day's visit (at least). If you hit Boston, put the MFA on your itinerary.

 Share Tweet This

history

Links to the Past

June 23, 2007 0:25:39.309

This is pretty neat. Back in October of 2006, I posted about some photos of the Crimean War that had surfaced. So imagine my surprise to see that the entire collection has been posted online - and the original photographer, back in 1855, was a James Robertson. There's an explicit notice on the site about permission being needed before you use the photos, so just follow the link to the King's Own Royal Regiment Museum.

Thanks to Peter Donnelly, the curator at the museum, for letting me know about this!

 Share Tweet This

logs

Weekly Log Analysis: 6/23/07

June 23, 2007 10:10:14.097

Time for my weekly look at the logs - BottomFeeder downloads went at a rate of 175/day last week. The details:

PlatformBottomFeeder Downloads
Windows426
Update167
Linux x86121
Solaris94
Mac X85
HPUX57
AIX56
CE ARM55
Mac 8/950
Linux Sparc29
SGI20
Linux PPC20
Windows98/ME14
Sources14
CE x869
ADUX5

Off to the HTML accesses:

ToolPercentage of Accesses
Mozilla54.5%
Internet Explorer36.1%
MSN Bot4.8%
Other2.8%
Opera1.8%

Looks like Mozilla still dominates my HTML accesses - which is not the case for the syndication numbers:

ToolPercentage of Accesses
Internet Explorer32.2%
Mozilla21.6%
BottomFeeder11.1%
Net News Wire4.4%
Other4.3%
Google Feed Fetcher3.6%
BlogLines3.2%
Vienna2.9%
Safari RSS2.8%
FeedOnFeeds2.7%
JetBrains1.8%
NewsGator1.7%
XML-FeedPP1.3%
Akregator1.1%
mioNews1.1%
Liferea1.1%
Python1.1%
News Fire1%
Jakarta1%

 Share Tweet This

marketing

The Meaning of Nothing?

June 23, 2007 10:36:38.872

I love the way Mike Arrington rationalizes being paid for quotes in advertising:

We do these all the time…generally FM suggests some language and we approve or tweak it to make it less lame. The ads go up, we get paid. This has been going on for months and months - at least since the summer of 2006. It’s nothing new. It’s text in an ad box. I think people are pretty aware of what that means…which is nothing.

Hmm. If it meant nothing, money wouldn't have changed hands. Why do companies like Cincom try to get customer quotes in success stories? Because it sounds less like market-droid drivel if an actual user of the software says it, that's why. Arrington knows this, no matter how hard he tries to rationalize it.

On this, I agree with Dave Winer's post.

Technorati Tags:

 Share Tweet This

travel

Off to the Freedom Trail

June 23, 2007 11:37:48.010

I haven't been to the Freedom Trail in over 20 years; it ought to be fun to revisit it. Back later with photos.

 Share Tweet This

travel

A day on the Freedom Trail

June 24, 2007 0:49:10.457

We had a pleasant day out on the Freedom Trail - it was great weather, and I got a few shots taken with my camera phone. My daughter has a much better selection of photos, but I won't have time to get them online until I get home. In the meantime, here's my brief gallery.

Technorati Tags: ,

 Share Tweet This

enterprisey

The stupid burns

June 24, 2007 13:57:46.701

James McGovern:

What if employees from Sun Microsystems such as Pat Patterson, Don Bowen and others were to get Sun to create a stupid little company that then immediately took all the IP and attempted to sell it as their own or at least use it within their own product where Sun immediately launched a lawsuit against them and didn't compromise forcing a judge to make a decision / ruling. This would do more for open source that a bunch of boneheaded bloggers babbling about harmony

Sometimes, the stupid coming from McGovern's blog just burns...

Technorati Tags:

 Share Tweet This

travel

Back from Boston

June 24, 2007 15:53:52.848

Short trips are always tiring - the mad dashes to the airport are just too close together. This morning, the hotel we stayed in forgot our wakeup call, so we had a little extra jolt of adrenalin to power our way through the sirport. Then the baggage handlers at BWI all took a simultaneous coffee break or something; I have no idea how else to explain the near hour we had to wait for the bags. It was a good trip though - you can check out the photos I took of the Freedom Trail here.

 Share Tweet This

development

Explanation, Stat!

June 25, 2007 8:33:47.020

I wish the author of this site explained what he meant by this:

At its best, code reuse is accomplished by sharing common classes or collections of functions and procedures (this is possible in C++, but not in Smalltalk or Java).

What does that mean?

Technorati Tags:

 Share Tweet This

itNews

Disk Space Galore

June 25, 2007 10:17:07.213

1 Terabyte drives are popping up all over - here's Seagate's announcement:

The drives come with either SATA (for consumers and enterprises) or SAS (for enterprises) interfaces and have an MFRP of US$399, which is the same as competitor Hitachi GST's 1TB drive.

Ponder that for a moment. I clearly recall buying a second 40MB drive back in the late 80's, when my first 40 MB drive was filling up. I also clearly recall thiking "I'll never need more disk". I'd say that again, but I know better. I'm editing audio these days, which chews disk. My daughter edits video, which chews mountains of disk. I can only imagine how much disk space we'll be chewing 3 years from now - but it'll be a lot.

 Share Tweet This

cst

Charting with Cairo

June 25, 2007 10:39:13.066

Arden Thomas has put together a chart example using Cairo and Cincom Smalltalk - worth checking out.

Technorati Tags:

 Share Tweet This

development

Sharing Common Code

June 25, 2007 12:58:08.948

I asked this morning what the heck was up with this post; now I see that the commentary is actually an old article (2001) from Dr. Dobbs:

Code reuse, the most common kind of reuse, refers to the reuse of source code within sections of an application and potentially across multiple applications. At its best, code reuse is accomplished by sharing common classes or collections of functions and procedures (this is possible in C++, but not in Smalltalk or Java). At its worst, code reuse is accomplished by copying and then modifying existing code. A sad reality of our industry is that code copying is often the only form of reuse practiced by developers.

A Smalltalk class can be thought of (never mind namespaces for the moment) as a global object. Therefore, any class method is - wait for it - a globally accessible "function".

We could also define a block and stuff that in a globally accessible variable, which would give Dr. Dobbs the same thing. Worse, this is Scott Ambler - who I would have assumed would know better.

Technorati Tags:

 Share Tweet This

news

Techmeme suckage

June 25, 2007 13:31:04.489

Scoble points out why Techmeme has been teh suck of late:

TechMeme (which started out as a blog news engine) has totally switched its focus away from blogs. I’m tracking the Plaxo news. I was among the first two sites out with news about Plaxo’s new 3.0 platform. I have the only videos. Posted two of them. I have one of the first real reviews. Google’s blog search shows I have the most inbound links. Om Malik, who posted a story about Plaxo two hours after I did, even linked to me.

I've been following a lot fewer links back to the site from my aggregator - it's just gotten dull. As Scoble points out, there are plenty of other sites if you want straight news site aggregation - Techmeme used to be different - and different attracted my attention.

Technorati Tags:

 Share Tweet This

sales

Customer Service, Misunderstood

June 25, 2007 16:01:01.467

James_Lileks asked for feedback on grocery store etiquette, and I thought this comment deserved some attention:

And the worst part is the attitude of the stockers. A couple of weeks ago I (very politely) said, "Excuse me," to a guy who was stocking paper towels, because he was in front of the brand I wanted. He sighed, rolled his eyes, and GLARED at me, as though he couldn't believe I would interrupt him in such a fashion. Someone needs to tell these folks that, as crummy as a job stocking grocery shelves may be, they have that job because the store has customers. And those customers don't really want to be there in the first place, and just want to get to the freakin' paper towels, already.

An awful lot of places seem to have retail staff like that - exasperation that a paying customer would ask a question is rampant. The thing is, it infects support lines, too. It's can be amusing to have an "aren't they dumb" conversation over beers, but at the end of the day, nasty interactions with staff tend to create blowback. It's far easier to create negative word of mouth than it is to create positive word of mouth, and people love to tell stories.

Technorati Tags: ,

 Share Tweet This

screencast

Using Custom Colors in a CST UI

June 25, 2007 16:46:39.498

On today's Smalltalk Daily, we make use of the custom color technique Arden explored this morning to set the background color of a button. The general technique is useful for any UI component.

Technorati Tags: , ,

 Share Tweet This

BottomFeeder

More BottomFeeder UI Work

June 25, 2007 23:39:50.750

I've never been completely happy with the way tabs work in BottomFeeder - I'm in the process of cleaning up that area of code, and making tabs function more like they do in Firefox and IE. I should be ready to throw a new build out soon. Here's what the latest development system looks like, with a search feed in the list - click through for a larger view.

BottomFeeder

Technorati Tags: ,

 Share Tweet This

cst

June CST Digest

June 26, 2007 8:46:05.498

The June 2007 Cincom Smalltalk Digest is now online.

Technorati Tags:

 Share Tweet This

general

If it's not one thing...

June 26, 2007 13:33:15.756

There are advantages to having older, fully paid off cars - the lack of a car payment being the primary one. On the other hand, the last two days have demonstrated the problems. My (now nearly 20 year old) Mirage failed its emissions check, so I had to haul it to the mechanic last week. Got the car back yesterday - still not quite good enough, so I have to invest another few bucks to get over the Maryland waiver hurdle. I drive maybe 4000 miles a year, so it makes little sense for me to buy a brand new car until this one falls apart.

Which took me to this morning.... As my wife was heading to work (in the nearly 10 year old Windstar), the window stopped working - it was out of its track. This is a bad thing when thunderstorms are in the forecast, so I drove her to work, and went back to the mechanic. One dismantled door and a spot weld later, and it all worked.

I'm hoping that's enough car investment this month...

Technorati Tags:

 Share Tweet This

screencast

Smalltalk Daily 6/26/07: More Cairo Graphics

June 26, 2007 14:31:16.125

On today's Smalltalk Daily, we take a look at some interesting charting code that uses Cairo Graphics.

Technorati Tags: , ,

 Share Tweet This

music

Let them Eat Lawsuits

June 26, 2007 14:44:38.018

This is good news - the RIAA is getting sued for malicious prosecution by Tanya Anderson, who got an RIAA suit tossed recently with prejudice. From Ars Technica:

Former RIAA target Tanya Andersen has sued several major record labels, the parent company of RIAA investigative arm MediaSentry, and the RIAA's Settlement Support Center for malicious prosecution, a development first reported by P2P litigation attorney Ray Beckerman of Vandenberg & Feliu. Earlier this month, Andersen and the RIAA agreed to dismiss the case against her with prejudice, making her the prevailing party and eligible for attorneys fees.

This is the only thing that will give the RIAA the proper motivations - kicking their customers and creating negative PR seems to have no impact on their behavior. Maybe a nice, big loss (with a precedent set for more of the same) will do the trick.

Technorati Tags: ,

 Share Tweet This

PR

iPhone Mania

June 27, 2007 0:46:42.895

How much buzz is there for the iPhone? Enough that Engadget has set up iPhone specific news feeds. And for the "oh my gosh, not more iPhone news" crowd - a sans iPhone news feed. Let the feeding frenzy begin :)

Technorati Tags: , ,

 Share Tweet This

cst

Documentation Questions

June 27, 2007 8:44:35.131

On some of our mailing lists, there's been a thread covering documentation recently. The general feeling is that we don't have sufficient documentation for the system, and I'll highlight a comment from the thread that illustrates that feeling, and a disconnect that I think we have. Mind you, I am not trying to "make an example" of anyone who commented in that thread! I'm attempting to use an example to iterate toward a solution:

To give few examples of topics, which all could benefit from answers to questions like: how it hangs together, what was the purpose of introduction (some people my consider that obvious and some may wish to debate), design assumptions about usage, etc.
Multi-process UI - so there is no need to keep directing people at #uiEventFor: and family.

Now as it happens, the multi-process UI (which was introduced in VW 7.1) is fairly well documented - here's a passage from the GUI Developers Guide (one of the PDFs we ship in the "doc" directory):

Prior to 7.1, each window stored a queue of events sent to it, and processing of events was directed by a single instance of ControlManager, named ScheduledControllers. Accordingly, there was only a single UI process, the one run by ScheduledControllers. To allow for multiple UI processes, this mechanism was changed in 7.1.

Each window now has a WindowManager that holds an event queue, representing a single UI process. Each WindowManager can manage the events for one or more windows. Usually, only closely related windows, such as windows in master/slave relation, or windows and dialogs they raise, share a manager. Note that a dialog blocks only the those windows sharing its window manager.

This starts on page 63, and it goes on to talk about using #uiEventFor (etc). So in this case, the issue isn't that it's not documented - it's that a PDF document, separate from the tools that developers live in (browsers, inspectors, debuggers) is hard to use.

The problem is that our PDFs are adaptations of the old printed manuals. Now, printed manuals are good things (albeit expensive), and the PDFs are decent analogs for the printed manuals. However, they aren't a good companion to the Smalltalk system in the "tools I use every day" sense of things. This isn't to say that they ought to be eliminated; rather, augmentation and integration would be highly useful.

Along those lines, I've been thinking about what we could do. Within the system, our Packages and classes are heavily commented, and most of the "API" methods (while not necessarily marked as APIs) are commented as well. What if that were extractable into an easily searchable reference format? What if that reference format were linked to relevant passages in our PDF documentation? In other words, what if you could actually get at the documentation directly from the tools you already use?

I'd love to have feedback on this - either comment directly, or send email to jrobertson@cincom.com

Technorati Tags:

 Share Tweet This

screencast

Smalltalk Daily 6/27/07: User Interface APIs

June 27, 2007 10:39:17.791

On today's Smalltalk Daily, we take a look at the VisualWorks APIs for commonly needed UI actions: enablement/disablement of widgets, UI customization at startup, that kind of thing. In particular, we look at classes ApplicationModel and WidgetWrapper.

Technorati Tags: ,

 Share Tweet This

weather

Too hot to think

June 27, 2007 18:16:20.649

Here in Maryland, it's too hot to think - so of course, I went out and did yard work. Then I drove my daughter around to various activities in my car with non-functioning air conditioning. If the thunderstorms hold off, I can head to the pool...

 Share Tweet This

PR

You Can't Hide

June 27, 2007 18:31:55.048

Via Scoble comes the most nightmarish delayed flight I've ever heard of - this is the sort of tale that used to just be told "over beers" between friends - now it's the sort of thing that could go completely viral. Airlines have a fairly consistent history of not being completely straight with customers - that's simply not going to work anymore. Not when so many people have phones and cameras that can shoot video and record audio.

Technorati Tags:

 Share Tweet This

marketing

Divergence

June 27, 2007 20:13:01.850

Laura Ries adds some reality to the iPhone hype:

Don't be fooled: Despite the hype, the deals and the massive advertising smart phones still only have around 10 percent of the market.

This made me think of Scoble's post on the "ugly phone" he saw. Laura's point is that people would rather have a device that does one thing well than a device that does multiple things adequately. That's not universally true; camera phones are wildly popular, and the cameras in those phones are certainly sub-optimal. On the other hand, using one I can take a photo and mail it to myself (or anyone else) immediately - which is a great benefit.

I think the upshot is this: converged devices are useful, but they are a niche product. Single purpose, "best of breed" products still tend to win.

Technorati Tags:

 Share Tweet This
-->