September 28, 2003


Some questions and concerns on service oriented architecture...

Posted by stu at 12:05 PM

September 27, 2003

select count(*) is not slow

a recent post I saw on ....

From: Billy Verreynne

> Can someone tell me what's fast way to get total of records in a table
> except using "select count(*)" statement? Can I get the information from a
> system table?

Fast? You mean something like this:

SQL> set timing on
SQL> select count(*) from tjs_batch.prod_sapcallusage200304;


Elapsed: 00:00:06.49

This is a straight cut-and-paste from a telnet session. The 6 seconds
will go down to 4 or even 2 seconds when run again as the applicable
bitmap index used will be cached.

So what's your reason for not wanting to use SELECT COUNT(*) or
thinking its slow?

One thing that really makes me reach for my lead pipe, is Oracle urban
legends Andy. Like thinking a SELECT COUNT(*) is slow, that standard
Oracle database's uptime is much less than that of the server it runs
on, that Oracle requires constant administration and a host more or
other silly tales.


Posted by stu at 09:08 PM


The Register has a good editorial on the cybersecurity paper that got Dan Geer fired from @Stake.

I thought this was the highlight of the piece, it seems to grasp the root of the argument:

"To summarise, monoculture itself is not of necessity bad for security, nor in theory is Microsoft monoculture, provided Microsoft is prepared and able to reform itself. If however it is not, then the Microsoft monoculture is a clear and present danger to global IT security, and it must be reformed via external means.

That is the document's argument, and it's a perfectly sustainable one, albeit not entirely susceptible to being boiled down into a headline soundbite."

You know, for all the controversy surrounding this paper, a couple of things come to my attention. Firstly, Bruce Schneier is a co-author - a rather respected security expert. Secondly, the idea of software diversity to increase the reliability of a distributed system is not a new one.

Security is in many ways a sub-section of general reliability. Gray and Reuter's bible on Transaction Processing has a section on N-Version programming as an approach to software fault tolerance: the idea is that "Heisenbugs" (non-deterministic, non-repeatable bugs vs. deterministic, repeatable "Bohr-bugs") can be thwarted by different pieces of software doing the same job at once.

Posted by stu at 08:50 AM

oracle power struggles

Interview with Larry Ellison about the new book Softwar. I'm looking forward to this one, Oracle's culture is fascinating to me (as is Larry).

Posted by stu at 02:18 AM

on monopolies

I've written some thoughts (in the comments section) on monopoly ethics and on IP law critics on Randy Halloway's entry over the recent @stake/microsoft security flap.

Posted by stu at 02:13 AM

On architecture

Someone recently asked me what architectural approach I liked... a few names were thrown out: Rechtin, Fowler/Cockburn, and Malvaeu/Mowbray (Software Architect Bootcamp).

I respect most of these authors. But there are a lot of problems with "architectural schools of thought". Many assume that "THEY" have the answer. Building big software systems is a lot more complex than that, and it's hard to have a cookbook approach. I find it's hard to come up with a step-by-step model, or "design by checklist".

Therefore I tend to like the "framework" approach to architecture -- one that doesn't dictate steps and realizes that situations differ.

I don't believe in "big architecture up front".

I think there's a fair amount of things that can be discussed up front, but I also believe architects must be involved with the team doing the building, at least for a significant part of the project.

I also don't believe in "UML is the key".

UML is useful in the right business context: you have a team that wants to use it and a culture that values "ceremony" for various reasons (geographically distributed teams, separate maintenance teams, etc). By "ceremony" I mean deliverables that aren't actually executing software, but bubbles and lines on a piece of paper -- it's Alistair Cockburn's term.

Financial companies tend not to value ceremony, I find. They're obsessed with time to market. Telecom companies, on the other hand, love ceremony.

Finally, I'm a believer that "architecture must have context".

Your software system is just a part of a larger organizational system (Alistair Cockburn would say it's a co-operative game within a larger political game). People, culture, management, and skills are first-order success factors - much more so than technology platform and software process.

Perhaps I have a broader view of systems architecture than most. But if you take systems thinking to its logical end, you have to be able to look totality of the system in its context. Its context is yet more systems! An architect can't just focus on technology, because then they're ignoring 2/3 of the system surrounding the technology!

To me, an architect is the bridge between business, people, and technology. Architecture cannot merely be about technology, because then it's just engineering analysis without context (building something right, but not building the right thing). But architecture can't just be about business, people and politics, because then you're not actually building anything.

Here are the most useful categories (with authors and thinkers) on architecture, in my opinion, from high level to low level.

a) Conceptual. I think Zachman framework captures this.
b) Context. I would look at Gerald Weinberg's work on systems thinking and congruent action. Systems architecture is inside a larger context of people, change management, and politics.
c) Process. The most balanced approach is Alistair Cockburn's work on productivity to determine the right process "fit" for your project. How much "ceremony" do you really need -- do you need to write a bunch of thick documents or can you just throw 10 people in a room with a whiteboard and code?.

What does process have to do with architecture? Lots. How you choose to build your software has a tremendous impact on how you specify it. Do you hand down UML models from upon high (not recommended!). Or is it an oversight role?

d) Requirements analysis This is about understanding how to break a problem apart and understand what should be solved in software systems, and what should be solved with changes to human systems. This is a form of "business architecture" (along eith (e)). Here, I like Michael Jackson's work on "problem frames", Gerry Weinberg's work on "ambiguity", Cockburn's work on "use cases", and Kent Beck's work on "user stories")
e) Information modeling. Many authors here: William Kent, David Hay, Terry Halpin, Chris Date, Bill Inmon, Ralph Kimball....
f) Evolutionary / agile development (Martin Fowler's Refactoring, Tom Gilb's work in the 1980s, and Kent Beck's XP writings) help keep the architecture in sync with the development.
g) A software performance engineering (SPE) process should be run concurrently with the main development process. I really liked the treatment in this book.
h) Finally, Computer Science.

At the highest levels, software systems architecture is all about people. At the lowest levels, software systems architecture is all about computer science. Since these are simultaneously the hardest areas in software development, most people tend ignore both (and focus on "design patterns", or a specialized platform).

I like to revisit the classics often: Gray & Reuter's book on Transaction Processing, for example. Another implication , to me, is that systems should take a scientific approach to their development in the small (XP'ers would call this a "spike solution"): don't make blind assumptions, test your hypotheses!

All of these means a very STRONG sense of healthy skepticism and pragmatism. Don't try to "fill every box" of the Zachman framework with a separate document , or to deliver a UML model for every piece of the system, but make sure you're addressing all of the various concerns in some (however informal) way.

A) what you're building (end-state),
B) in what business context (funding, priorities & culture),
C) in what domain (people, concepts, information)
D) with what functional requirements,
E) with what environmental requirements (performance, scalability, availability, platforms)

Some might say this is too much, and way too complicated. Actually, I'm not advocating much other than to pay attention to the reality around you -- it's just that I'm breaking down reality into classifications. That tends to highlight problems that we traditionally put into a black box labelled "here there be monsters".

Posted by stu at 12:43 AM

September 25, 2003

.NET mysticism and Java productivity

Saw Ole's blog entry on how many of the new .NET technologies are being presented as cool, or even mystical as part of the hype gearing up for the PDC.

Don Box alluded to this idea before as well - controlling surface area requires a significant shift in attitude for people who thrive on complexity.

This resonates with me. I've always viewed the Microsoft technology culture as one that thrives on complexity. (i.e. COM put the COM in COMPLEX). .NET seems to have changed attitude quite a bit, at least perceptually. I hope it sticks, its why I'm interested in .NET after generally avoiding Microsoft technologies. I taught several of those 2-day Microsoft seminars on .NET in 2002 while I worked for Infusion, and I quite enjoyed talking to the developers I met about their concerns and excitement surrounding the framework.

On the other hand, I think Java's initial enormous popularity had a lot to do with its fall-over simplicity. Parts of J2EE seemed to really lose that. I think it's because distributed / parallel / concurrent development actually is quite naturally complex, and no one yet (save for perhaps David Gelertner's Linda) has come up with an elegant general solution to it. To me, elegance is Einstein's paradoxical statement - be as simple as possible, but no simpler.

On another note, before people start rampantly quoting Greenspun's theory that Java/JSP costs 5x more than a project in Perl as fact, remember this wasn't based on any facts, studies, or experiments - it was a number pulled out of the air for rhetorical purposes. I've made comments on this before on Slashdot, but in a nutshell, I think Java certainly CAN be as productive as Perl, the question really becomes whether the horde of consultants and "experts" actually encourage this or not, and whether the myriad of framework choices help or hinder this.

The problem to me seems to be the J2EE community got run over by the "design patterns" idea, where many inexperienced developers-turned-consultants decided that every project needed design patterns to make their systems more maintainable. They lost sight that usually less code == more expressivess == more maintainable. This as opposed to "pretty UML bubbles and lines" == more code == $$.

This is why the .NET PetShop was such an embarassment, in my opinion. It was faster, smaller, and my observation: it wasn't that you COULDN'T write something that small & fast in J2EE (as much as some may like to imply) - it was that no one wanted to! "BUT BUT - stored procedures are hard to maintain and proprietary! Proprietary bad!" That's knee-jerk dogmatism, that's not objective thinking about software design!

If a beginner was pointed in the right directions with truly productive modes of working in Java, I think there's a good comparative story. It's what I try to do when I teach, I move away from the Sun-standard J2EE marketing stuff and look at what real people do to get productivity.

It's a sad and ironic tale: a community so prided on simplicity has so lost its way, and it's taken Microsoft to point this out.

Posted by stu at 07:13 AM

Liebermann computers

What do people make of this? Despite the fluffy market babble, it does look like an impressive set of specs. The company seems very new and I can't find any information on them on Google, which is strange.

Posted by stu at 06:39 AM

September 23, 2003

reading slowly

Scott Rosenberg comments on the latest meme, that psychology email floating around about how we can all raed eiamls taht hvae tiehr ltetres sbrmlaecd (but it gets harder as the words get bigger).

There's one part of his entry that caught my attention, it seems related to some of Dick Gabriel's writings.

    Reading slowly is a dying art. As our world pushes us inevitably towards more speedy skimming of information blasting at us through a dozen different protocols, we scan more than we read. That makes it easy for us to parse near-gibberish, and that capability is a wonderful thing. But reading slowly is a wonderful thing, too. It is an art we still need in a number of areas. Reading poetry requires the ability to read slowly. If you read a poem the way you read your e-mail, you might as well not bother. Oddly enough, working on computer code requires a similar ability: Both because the computer is far more unforgiving of typos, bad punctuation and garbled verbiage than the human eye, and also becaause in good code, like good poetry, every word counts, and you need to be able to notice the patterns the words establish.

Posted by stu at 05:19 PM

September 22, 2003

java = suv?

Phil Greenspun suggests that Java is the SUV of programming languages. The link is Slashdotted, here's the post at slashdot, and here are my comments.

Posted by stu at 09:44 AM

Developer communities and the PDC

I'm getting pretty excited about my first Microsoft PDC this October. I'm not knee-deep into the Microsoft community so I find their developer culture rather fascinating because I used to be a member of the J2EE community.

Today I find myself not relating to any community (I jump among the OO, distributed systems , relational , J2EE , .NET , and Oracle worlds) ... they're all way too religious. I'm not one to suggest the trite cliche' that "platforms are just tools", because I think emotions and emotional motivations are very important in one's work. I just don't tend to attach the same emotional importance to what these communities hold valuable, at the moment.

That may change: The .NET community has a lot of vibrancy and is very appealing. As for the other communities: The J2EE community, while vibrant, is rancorous, fractured, and extremely political. The Ruby community is wonderful but I'm not sure I'll get a chance to really use it. I'm not sure there is a relational community anymore, and the distributed systems community seems to be either Web Services geeks or researchers that have been grudglingly silent since the web services trend took off. The Oracle community has some of the most experienced IT folks I've seen, but they all seem to have fallen down the path of cynicism (and it's very tempting given the amount of crap passing for "systems architecture" these days in the J2EE world). The open source community (well, the Slashdot community) is very fractured, very political, and doesn't actually get a whole lot accomplished. I still have a soft spot for this community, as I've been a Slashdot member since near the beginning - 1997 (I'm user #1311, and I was the lucky 10 millionth hit.). But these guys remain so politically ineffectual and naive that I feel a constant struggle between my frustration at their (sometimes) childishness and my continued desire to be involved.

Anyway, back to the PDC... things that interest me in this conference: SQL Server Yukon (I want to see where it's going vs. Oracle 10g), the mysterious Indigo, some of the architectural sessions on Service Oriented Architecture, and the latest .NET techniques for Web Services ... I'm not really there for the client stuff, though Longhorn probably has a lot of goodies inside it.

Going to a Microsoft developer conference with a Powerbook is going to raise some eyebrows. I may upgrade my Powerbook to the new 1.33Ghz model if the trade-in price is right... (I have a 1ghz 17-inch right now, with 1 gig ram). I think the new one might give me an extra boost to run VS.NET 2k3 on Virtual PC, though I'm not sure if the lack of L3 cache will cause problems. Its not my primary platform (yet) so I don't mind it too much, but I definitely would want a real PC laptop or desktop to do day-to-day .NET development.

Posted by stu at 05:18 AM

September 15, 2003

why i wear black

I wore black on Friday. That evening (Tokyo time), I discovered Johnny Cash had died.

We'll miss you, Johnny.

Posted by stu at 05:48 AM

September 14, 2003

windows media

I've been finding it rather frustrating that most streaming video resources on the web seem to be moving away from Real media to Windows media. Real sucks, but it's cross-platfrom. This media is usually MPEG-4 but Microsoft has managed to take the standard and wrap it in the proprietary ASF or WMV format if you use Microsoft's video tools.

So players like Quicktime can't get at the content. Now to be sure, a lot of downloadable content is Quicktime - but not a lot of streaming content outside of movie trailers. This is weird considering the streaming server is FREE, but I guess it's another one of those IT-dept stigmas against Apple, not to mention I know a lot of Windows users that don't like QT player.

Microsoft's been trying to take over digital media for years, and they may actually to be starting to make some headway, though at the expense of a lawsuit from Burst, the creator of some of WMP9's technology. The is of course some evidence of dirty tricks like email withholding. Microsoft... guys... you're big. I use your software when it's good. So then, why do you have to continue to be a cheat?

Anyway, back to the topic.... Macintosh Windows Media Player 7.1 has been out for some time, but most new content is being ripped with verison 9... And since version 9 was supposed to be about Microsoft's take-over of all digital content I figured it would only be for Windows. AT LAST, RELIEF: Windows Media Player 9 for OS X has been announced as "coming soon!". I'm not sure whether to laugh or cry. I don't want to use it as I'm quite happy with the quality of QuickTime or pure MPEG, but if the content is in it.. do I have a choice? (well yes, i could choose not to view the content. That's not a palatable choice, however.) sigh.

Posted by stu at 09:45 PM

September 07, 2003

rms classic remix

jono bacon has recorded a death metal remix of the richard stallman classic free software song. From [jwz].

Posted by stu at 05:59 PM

September 06, 2003

design for performance

I've been most influenced by Tom Kyte to think in this direction. Here's my wiki page.

Posted by stu at 10:33 AM