model driven architecture

We tend to write a lot of similar code over and over. If you have ever written code to persist a Java object into a relational database table, you know what I mean. It is similar for every object. Although the characters you type are different, there is a definite pattern, and you know deep down that an intelligent person should not have to endure such tedium day in and day out. The same goes for a lot of user interface code, like data entry forms. The same code gets written again and again; only the names are different.

I believe very strongly that model driven architecture is the way of the future for software development. Objects led to interfaces. Then, collaborations. Then, patterns and pattern languages (families of patterns). Model driven architecture is a natural extension of this trend. After identifying a pattern language, it should be possible to instantiate those patterns (write a software program) by expressing that intent through modeling. Modeling in the abstract sense is the act of capturing concepts in a notation. Thus, I consider programming in Java to be a form of modeling. A programming language is not a very compact modeling language. Programming languages are designed to have a lot of redundancy to allow for error checking. Patterns in the code also indicate a lot of information that could be expressed in a more compact form. I view MDA as expressing software concepts in a very compact form (the model).

I think we need an example. I could write a program to represent pictures formed from geometric shapes. The software itself would probably require thousands of lines of code to perform the editing, rendering, and other functions. However, the application is really only dealing with a few basic concepts: ellipses, polygons, line segments, and a few others. It should be possible to model each shape with a minimum number of parameters; e.g., an ellipse would be modeled by three points. In this manner, we could express any diagram understood by this application very compactly in a modeling language that captures the parameterization of shapes.

Now, let’s take that graphics package and reuse it as the foundation for constructing an application that renders telecommunications networks. This application deals with concepts like location, network elements, ports, and connections. Each concept is rendered with symbols, which are merely recurring patterns of our familiar geometric shapes. The parameterization of shapes is no longer the most appropriate modeling language for capturing the essential concepts of this application. A more compact representation can be achieve by parameterizing the concepts that are directly understood by the application. This is the essence of model driven architecture.

Not everyone views MDA as I do. Actually, I have yet to encounter anyone who has expressed it as simply as that. Most proponents of MDA ramble on about UML and MOF and platform independence and all kinds of other non-essential mumbo jumbo. The key idea that is lost among the OMG UML/MOF folks is the notion of unit economy in the theory of concepts; that is the need to represent concepts in the most compact form. This is necessary within the mind, and this need is reflected in language. UML makes perfect sense as a language for representing analysis and designs for software development. However, when one is looking to model concepts within any other context, the absurd verbosity and complexity exhibited by UML/MOF make as much sense as using geometric shapes as the modeling language for telecommunications networks.


business idea for enterprise collaboration

(Continued from 2002-07-08.)

One of the biggest impediments to productivity is the lack of tools to facilitate collaboration. This was not as noticeable, when workers tended to be collocated with those they needed to collaborate. Physical collocation makes less sense today, when globalization requires companies to be distributed throughout the world. Expertise is becoming so specialized that it is impossible to develop a broad range of skills in house and locally, so this creates a need to outsource and recruit teleworkers. Email, telephony, instant messaging, and intranet Web sites only go so far to facilitate communication with these remote sites. These technologies need to be integrated into business processes to facilitate wide scale real-time collaboration.

In a software development organization, there are very specific requirements that are unmet by today’s information technology. Software development tools tend to focus either on the relationship between individuals and code artifacts (e.g., integrated development environment) or the relationship between the code artifacts and the quality assurance processes for the software product (e.g., software configuration management). Over the past decade there has been a greater focus on analysis and design tools (e.g., UML modeling). However, modeling is a very small part of analysis and design. The majority of analysis involves the capture of requirements and use cases in the form of natural language (e.g., English) descriptions. This is a very iterative and interactive process among experts and analysts, and the information flows into design. Design is a very creative process among analysts, architects, and programmers in various areas of expertise (e.g., user interface, application server, database). The collaboration tools support for analysis and design are wholly inadequate today.

The software development community needs a Web based collaboration system for analysis and design. In the analysis space, Rational Requisite Web almost completely misses the mark for a requirements database. In the design space, there is nothing to facilitate the whiteboard-style interactions that are necessary during the creative process. Such interactions work toward evaluating design options and formally capturing the final design decisions. UML modeling is merely a visualization technique. UML diagrams are not in a format that is appropriate for communication between all stakeholders. Ultimately documents must be produced for the software architecture and the design of each subsystem. Collaboration tools are required for producing these artifacts as a team.

I have looked at using a Wiki to facilitate collaborative content creation. This is not a bad mechanism for authoring, reviewing, and revising content. However, it is wholly inadequate for taking that content and producing documents for publishing. Moreover, a Wiki alone is insufficient for handling all the various kinds of content that is needed for analysis and design (e.g., models, diagrams, code, user interface prototypes), and for managing the workflow.

I believe that this is a tremendous business opportunity. There is clearly a need for this kind of collaboration tool for software development. One can imagine this need extending into other engineering activities, and perhaps even into other disciplines (e.g., sales and marketing) within the enterprise. This is likely a $100M idea with a market window that is likely to remain open for quite some time. If I had the guts, I would probably pursue this one as my baby. I’ve got the perfect skillset and experience to make this happen.


I am sitting here in a Boeing 737 on the tarmac, as maintenance personnel check over the aircraft to determine why some indicator lights are showing a problem. What has been occupying my mind is the first few pages I’ve read of The End of Time – The Next Revolution in Physics by Julian Barbour. He suggests that there is in reality no such thing as time. It is merely a figment of our misinterpretation of the facts, which result from the limited scope of our personal experiences. This idea is very provocative, because it goes against intuition and it seemingly contradicts everything we know to be true. There is something extremely violent and destructive in this notion. Just the possibility of setting fire to something that we hold as fundamental is exciting.

This is very serendipitous. My life’s work seems to revolve around creative thinking. One of my fundamental responsibilities is to think outside the box to solve problems that are beyond the normal capacity of others. I must imagine what lies outside of common knowledge, and embrace possibilities that may be seemingly absurd or false, in order to discover that something out there is in fact precisely what must be true (or brought into reality). Thinking outside the box requires that in fact there is no box. Or perhaps that all those poor souls, who thought they were in the box, were actually floating outside a bubble. Or something much more bizarre.

language design 101

Language provides us with the framework with which we express ideas. Numbers, arithmetic, and calculus are the language of mathematics. C, C++, and Java are languages for computer programming. This is only partly true, as Guy Steele Jr. explains in Growing a Language. This perspective on language design extends far beyond programming.

I will focus on software related language design. It is an exercise for the reader to extrapolate how the same principles apply to literature, music, and other forms of human expression.

Just as Java is the most basic vocabulary and grammar with which more expressive languages can be designed, English is similar. The language required to produce a book is far more advanced than English vocabulary and grammar. Literary devices, plot structure, and character development are patterns that are designed into the language of literature. Similarly, design patterns make Java a useful language for programming.

The language of object-oriented analysis and design (OOAD) is the Unified Modeling Language (UML). However, UML is not very expressive by itself. It was not designed to be as precise as programming languages, because it was motivated by the needs of conceptual modeling. They thought that conceptual modeling is not precise. That is the tragedy of imprecise thinkers.

Now, they have caught on to the idea of using models to generate code. This requires precision; a machine only understands 1 and 0. There is no room for ambiguity. It is now a huge challenge to apply UML to this model-driven architecture (MDA).

We are constantly grasping for ways to improve how we express ideas. A thousand words are better expressed with a picture. The concepts represented by the geometric shapes are better expressed with tags. Patterns are recognized as we organize those concepts into more advanced ones. As a consequence, many thousands of instructions are captured in a blueprint with a small number of symbols. At each step, we seek to be more expressive with compact representations. This is language design.

change is destruction

I am reading The New New Thing. It is more captivating than I anticipated. It was given to me as recommended reading, but I had no idea what it was about. It is a biography of Jim Clark, the founder and inspiration behind SGI, Netscape, and the present commercialized dot com era of the Internet.

One characteristic of Clark’s appeals to me. He paid no respect for history. His only care is towards how to invent the future. The key word is “invent”, as opposed to predict. People who work at prognostication are merely an audience. Innovators aren’t just interested in looking forward, but in engineering it into existence.

I have noted before the difference between builders and breakers. However, creators are also destroyers in a sense. The reason for creating something new is to impose change upon that which is the source of dissatisfaction. The intent is to obliterate something, as it exists today, in order to replace it by something better. Engineers love to destroy things as we know it, and substitute a new world order that matches our vision. The great destroyer is change, and this weapon is wielded by original thinkers. They have no respect for authority. They show no reverence for what came before them.

The opposing force to change is the people trying to hold onto what they have, desperately fearing that the shape of their environment is being altered beyond their control. A person’s reaction to innovation is revealing. It shows one’s appreciation for creation, the power to destroy and reinvent. Or opposition, if that is the case. What do you call “visionaries” who are unable to recognize the future, even when it is put in front of them? Tourists are there to see things that others have built. I have no interest in seeing the world. I want to rebuild it.

today’s lessons

I received a copy of The Pleasure of Finding Things Out. I’m only 86 pages into the book, and I’m already loving Richard Feynman. He was a truly brilliant man.

No doubt Feynman felt responsible in part for the development of the atomic bomb. His first hand account of his time in the Manhattan Project is gripping and hilarious. This man’s efficacy and his light-hearted perspective are inspirational.

And the one thing that Von Neumann gave me was an idea that he had which was interesting. That you don’t have to be responsible for the world that you’re in, and so I have developed a very strong sense of social irresponsibility as a result of Von Neumann’s advice. It’s made me a very happy man since.

Feynman reminisced about his father’s influence on his childhood learning. Here is a notable passage that demonstrates how well his father’s views align with my own.

there was a picture of the Pope and everybody bowing in front of him. […] Why are they all bowing to him? Only because of his name and his position, because of his uniform, not because of something special he did, or his honor, or something like that.

Recognitions of symbol versus substance catch my attention.

Like any advanced thinker, Feynman’s ability manifested in a diverse set of ideas.

Because of the success of science, there is, I think, a kind of pseudoscience. Social science is an example […] We get experts on everything that sound like they’re sort of scientific experts. They’re not scientific, they sit at a typewriter and they make up something like, oh, food grown with, er, fertilizer that’s organic is better for you than food grown with fertilizer that’s inorganic – may be true, may not be true, but it hasn’t been demonstrated one way or the other. But they’ll sit there on the typewriter and make up all this stuff as if it’s science and then become an expert on foods, organic foods and so on. There’s all kinds of myths and pseudoscience all over the place.

I may be quite wrong, maybe they know all these things, but I don’t think I’m wrong. You see, I have the advantage of having found out how hard it is to to get to really know something, how careful you have to be about checking the experiments, how easy it is to make mistakes and fool yourself. I know what it means to know something, and therefore I see how they get their information and I can’t believe that they know it, they haven’t done the work necessary.

That is priceless.

road to utopia

into the fast lane

In the long term, I still firmly believe that it is modestly priced, high volume consumer services like telephony, television, video on demand, music, gaming, and e-commerce that will be the Utopian goal. There are many obstacles that must be overcome first: political reforms (regulation, laws, licenses, spectrum), radical changes to content provider business models, network infrastructure investments (fiber, packet radio, and IPv6), cost reductions to high end gear (optical CPE routers, IP enabled home theaters), and a critical mass of adopters. There are too many factors to accelerate artificially; it must happen as a natural progression.

Consumers are notoriously frugal. They generally purchase the minimum to satisfy their needs. Anything beyond what is good enough becomes a luxury. To succeed in this market, it is crucial to provide services perceived to be essential rather than merely luxurious. Without that economy of scale, a provider cannot recuperate the cost of building out the infrastructure to neighborhoods.

In the meantime, there are high value services that can address immediate needs. Businesses are always in search of productivity gains and improving efficiencies.

  1. Collaboration – With enterprises extending their global reach, workers in remote offices will need to collaborate more effectively. Video-conferencing, remote white boarding, groupware, and other real-time collaborative work tools will significantly reduce the need for in-person meetings. Expensive, time-consuming travel will become largely unnecessary.
  2. Teleworking – Urban traffic congestion, costly office facilities, and a diversely distributed global workforce are all forces that will encourage greater use of telework. Effective online collaboration and improved broadband access will enable workers, who want the convenience of working from home, the ability to do so without any compromise in productivity.
  3. Business Integration – This is already underway. Supply chain management and other forms of business-to-business (B2B) integration are improving the ability to outsource. Concentrating on core competencies implies contracting out non-core work to business partners, who do consider that work to be their core competency.

Enterprises are willing to invest in incremental improvements to business efficiencies, because there are measurable returns. The capital markets exert great pressure for such improvements to be demonstrated each and every fiscal quarter. This market can be penetrated without having to incur sizable short-term losses, unlike the pricing that is necessary to penetrate the consumer market. Whereas information technology is often considered a luxury to consumers, it is clearly essential to many businesses.

The productivity gains at work become catalysts for workers desiring similar lifestyle improvements at home. Online collaboration with remote coworkers leads to online collaboration with family and friends. Telework leads to home workers applying the technology already installed towards personal entertainment. General availability of the technology tends to stimulate new opportunities as users discover new ways to apply it. It is this manner of cultivating markets that will lead us to the end goal.

success and failure

Fear of failure is paralyzing. It is the one source of impotency that can prevent all forward progress. Success becomes the most imperative, when there is a great deal to lose. It is also when it is the most difficult to act towards achieving success.

We should not forget that success is a strategic vision. There will be tactical failures along the way. Often, failures are necessary in order to gain the requisite knowledge that leads to ultimate success. An unwillingness initially to go forth and learn from failure would be the critical error that would make success impossible.

There is a tendency to mitigate risk by introducing rigid processes. If we go through these tried and true steps, then we will have satisfied ourselves that we did everything in our power. As an organization matures, its processes become more rigid and ingrained into the culture. They also become more invasive and fine grained. Every thought and action becomes regimented. The more procedures to follow, the less we rely on individuals to think. When individuals do not think for themselves, innovation ceases.

Institutionalized processes are put in place to ensure that best practices are documented. Organizations talk about continuous improvement and point to the procedures that allow for innovation to feed back into the quality system. We must realize that quality is something that we trade for at the expense of innovation and time to market. A quality system also seeks to prevent failure from occurring. Stifling the opportunity to learn from our mistakes is a fatal error. That can be a detriment to long term success.

mission: difficult

The reason I hesitate to accept a critical role in the organization is because I am not that dedicated to the cause. Four years ago, I completely devoted all of my time and energy, and it went for nought. Looking at the big picture: it’s not worthy of my full potential. This begs the question: if not this, then what?

What cause would I dedicate myself to, in order to satisfy my own desires? Here is my answer.

There are many evils in the world to be fought. There are also much good to be pursued. How to choose? One must look deep into oneself and choose that which is a reflection of one’s own values. For me, it is clear what my mission must be. My mission is to enable individuals to have unfettered access to whatever information they desire, whenever and wherever they want it. This implies a number of subgoals and requisite technological advances.

Eliminate bandwidth bottlenecks in the last mile. This means having fiber to the home. Bandwidth is important but mobility is also key. Information has to be at your disposal anywhere. 3G wireless will deliver 2.4Mbps to your handset possibly in a year or two. That’s a good start. Better yet, end-to-end quality of service must be available on demand.

With a big enough pipe comes the next step: filling it. IP and the digital network must be everywhere. Telephony, video conferencing, music, television, movies, books, baby monitors, security cameras, space probes, medical examinations, and money itself must converge.

This is not primarily a technological revolution; it is a political one. Ubiquitous bandwidth and networking remove the barriers to freedom to information. Instantly everyone has cheap access to information and a means to put out their own message with global reach. Control over the access, distribution, and content is decentralized.

One of the things I feel almost murderous about is content regulation. The state regulates television programming. Any broadcaster, who wants to distribute content to Canadians, must obtain a license to a channel. Every license is constrained to deliver a specific type of content. The licenses are scarce to control who may offer content. Another by-product is the artificial manipulation of the types of content that are offered. In effect, consumers are only allowed to watch what they allow; and only from the providers they permit to operate. When all content is packetized information, there are no borders, regulators, and censors that cannot be bypassed. Fuck the FCC, CRTC, and the People’s Republic of China.

I also have problems with industry collusion. For example, the movie industry wants to use region coding and the encryption technology of DVDs to control the distribution channels for the content. This keeps the content providers in line, because their content cannot be delivered without the industry’s say-so. This also keeps the consumers in line, because they control all access to the content. A cheap, ubiquitous content distribution network, which is open to all providers and consumers alike, breaks the stranglehold. Fuck the RIAA, the MPAA, monopoly telephone and cable companies.

Finally, the world must bend to every will. Personalization is essential to realizing a value proposition, which will entice people to adopt the technology. Given bandwidth, mobility, and intelligence in the content distribution network, what do you want out of it? What each person wants is what must be.

I want to be able to pull out my handset, while walking around downtown, to figure out where to have dinner and what movies are playing at the cinema. I want to have the entire resources of my office available through my notebook computer, wherever I may be. I want to watch any television program or movie at whatever time of day is convenient for me; not based on the programming schedule determined by some broadcaster. All information should be available through a client-pull (e.g., web browser) model, as opposed to server-push (e.g., tv). I want to be able to listen to any song at any time. I want to tell my handset that I am shopping for shoes today, and for every shoe store I pass to inform me of their products that match my search criteria. I want to walk into my favorite store or restaurant and be served in the manner I like; for them to know my name, my preferences, and my habits without ever needing to ask me. I want an empty wallet, except for one device, which gives access to my identity, medical information, insurance, loyalty rewards, credit, and money—all securely. I want the world to adjust to me, when in my presence. I want that for everyone individually.

So if you are out there and you share my vision, talk to me. We have a mission.

proprietary J2EE

I am less than impressed with this article.

The author is arguing that proprietary extensions threaten the promise of standards based application portability—that Java’s promise of “write once, run anywhere” is dead, and was never a reality anyway. This demonstrates to me a tremendous lack of vision.

The J2EE platform is growing as a language. This means starting small and collecting the best contributions over time into a larger, more capable language. The language evolves with the community that uses it. A standards based approach to application development suggests that if you constrain yourself to using only the standard features and interfaces, then you should be portable to any implementation. Generally, that is true of J2EE; standards based portability is certainly more a reality with J2EE than on any other equivalent platform (e.g., Microsoft .NET).

Proprietary extensions by application server vendors are expected. Applications written to the standard will still be portable, because they do not depend on proprietary extensions. In time, the scope of standards will expand, as technologies mature and become commonplace. The industry’s best practices become encoded into standards, because the market demands it for portability (reducing costs). Innovation (proprietary extensions) will happen further out into the leading edge, where technologies are unproven. Vendors can differentiate their product based on quality of implemention and value added features. The latter requires extending beyond the standard features.

The article paints a picture of a static standard, which is being eroded. In reality the J2EE standard is constantly evolving to expand its capabilities. Application server vendors are moving in lock step to embrace the newest standard; often, their products have already implemented the standard by the time it is officially published. In reality, J2EE application portability is continually improving rather than being threatened due to this natural evolution.

Insights into innovation