News from National -- Current Articles
12/20/2002
8:12:25 AM
Architecture Guru: Michael
Daconta
Interview by S.Ibaraki, I.S.P.
This week, Stephen Ibaraki, I.S.P., has an exclusive interview with
Michael C. Daconta. Michael is an internationally known developer, writer,
design and architecture guru specializing in such diverse areas as the
Semantic Web, eXtensible User interface Language (XUL), C++, dynamic memory
management, Java, and JavaScript.
Michael serves as the Director, Web & Technology Services at McDonald
Bradley, Inc. (www.mcbrad.com).
*****
Discussion:
Q: Your combined accomplishments are staggering. Thank you for agreeing to
this interview.
A: Thank you for the compliment and for giving me the opportunity to discuss
issues of importance to information technology professionals. I think it is
especially important now because of the depressed mood of the industry after
the Internet bubble burst. In my opinion, this is doubly unfortunate because
the enthusiasm over the internet was wholly justified. The greed and
corruption ruined a good thing. Thus, we need to not let the greed of a few
dampen our spirits. Technology and the Internet are revolutionizing every
aspect of society and we have the power to continue that trend. We also have
the responsibility to always put the public interest first and to abide by
the Software Engineering Code of Ethics and Professional Practice at http://www.computer.org/tab/seprof/code.htm
Q: Michael, can you describe your remarkable background and how you got to
the position you are currently in? What are your particular responsibilities?
A: For those who want all the details, you can look at my curriculum vitae at
http://www.daconta.net/resume.html.
I will take a few moments and highlight some of my most memorable experiences:
- Military Intelligence
Officer. Not being able to pay for college, I enrolled in ROTC and later
won an ROTC scholarship from my performance at the Advanced Camp
Training (I later won Distinguished Military Graduate). I am proud of
serving as an Intelligence Officer in the military and highly recommend
it as a great launching point to any career. Having said that, you must
always be on the lookout to shape your career in a positive way. I
wanted to make sure that the military used my computer science degree,
so in Officer Basic Course (at Ft. Huachuca, Arizona where I have just
moved back to), I began asking the Intelligence Center and School
personnel if I could use my computer science skills. I eventually
elevated the issue to the General’s technology office and was given the
opportunity to come back to Ft. Huachuca after serving a year of
tactical time in Korea (to really learn what the military was about).
The leadership skills I gained as a platoon leader in Korea (after a
short detour through Airborne school) have been invaluable. Taking care
of troops, counseling soldiers, staying up all night on exercises,
handling over-turned vehicles, disciplining soldiers, working with and
under great officers … I cherish those memories.
- Mystech Associates,
Inc. - I always knew that my military career would probably not be
life-long. The pull of higher technology was too great and when I was in
the military the technology career-track was non-existent (this has
since changed). After writing military intelligence simulations at Ft.
Huachuca, I was hired by a gentleman named Tim Halstead to work on a
larger Intelligence simulation called TACSIM. Thus began my career at a
wonderful company called Mystech Associates, Inc. When I joined there
were about 150 people and when we were bought by Sterling, we were over
300 people. This was due to the outstanding leadership of Dave Young and
the remarkable Human Resource skills of Jodi Johnson. Recently, Dave and
Jodi started a new company called Oberon (http://www.oberon.com). At
Mystech I worked my way up the technical career ladder … programmer,
system analyst, project lead, office manager and technical director.
Mystech was a forward-thinking company and put in place a solid
technical career track. My two most memorable pieces of software during
this time was the High Resolution System Stimulator (HRSS) and my first
major Java program (in 1995!) called the Operations Other Than War
(OOTW) simulation. HRSS was especially memorable because I had to fight
to do the project. There is an expression for young Lieutenants in the
military called “Bet Your Bar”. The “bar” refers to your “butter bar”
which is the gold bar that designates your rank as a 2nd Lieutenant. So
“betting your bar” was putting your credibility (and possibly career) on
the line in your assessment of the enemy situation. Well, I had to “bet
my bar” before my superiors would let me build the HRSS simulation in
only 3 months before a major exercise. The technical aspects of the
project were compelling: simulate high-level tactical units, deaggregate
each unit into its individual components (tanks, people, etc.), lay out
the deaggregated units on digital terrain in formations, broadcast the
positions of each deaggregated element to a high-fidelity 3D Unmanned
Aerial Vehicle (UAV) simulation running on an SGI box where the
equipment would be rendered in 3D. Me and one other programmer coded the
simulation in C in three months, deaggregated and laid out up to 300,000
entities in the exercise. It was a big success and won a larger contract
to enhance and field the simulation to other sites. Let me briefly
mention the OOTW simulation. I coded it in Java in three weeks and
tested it live on a training exercise at Ft. Huachuca. In its first
test, it ran flawlessly (no memory leaks, no segmentation faults!) for
four days straight. A long-running simulation is a great test of a
language and this sold me on Java. As a funny aside, throughout those
three weeks of intense coding, my nervous system administrator kept
saying, “You are never going to finish it!” I kept replying, “Relax.
I’ll make it.” One of the best compliments I have ever received was from
an operations manager I hired named Rob Olson who said, “Mike, you are
the calm in the center of the storm!” There definitely were some hectic
days at the Military Intelligence Battlefield Simulation Center
(MI-BSC). Good times.
- Telemedicine
Applications Company - Mystech and a private investor spun off a small
company to leverage some work it had been doing on Telemedicine applications.
This was my first experience at coding for the health care industry and
I would do it again in a heartbeat! This experience was bittersweet for
a number of reasons including personnel conflicts. In terms of
technology, I never coded so much Java. Unfortunately, we experienced
growing pains as Java 1.0 moved to Java 1.1. Believe me the drastic AWT
changes caused me a ton of wasted time. We probably stumbled across
every major deficiency of that early Java platform including threading
bugs, AWT bugs, numerous Out of Memory Errors, and lots more. We also
did have some successes: I wrote my own networked Whiteboard and watched
a Doctor in Stanford University perform a remote teleconference with
Doctors in Korea using my Whiteboard!!! What a jolt! (Of course, it
worked well otherwise I might have a different opinion). I also wrote my
own DICOM viewer for displaying radiology images. A key lesson learned
here was that you must properly size your system: you don’t handicap
yourself with an underpowered database (Microsoft Access), not-enough
memory and a brand new operating system (Windows NT 4.0 with NO service
packs -- ugghhh!!!).
- Electronic Mortgages
with Fannie Mae - Recently as Director of Technology and Web Services
for McDonald Bradley, I had the privilege of developing XML based
standards for Fannie Mae. These standards were adopted by the Mortgage
Industry Standards Organization (MISMO) and are being refined and
deployed in pilots as we speak. I created a compound document format
which basically encodes the Model-View-Controller paradigm in a single
document. Working with the folks at Fannie Mae like Gary Haupt, Jennifer
Donaghy and Mark Oliphant was a real pleasure. This was my first
experience working with the financial/mortgage community and it was also
very successful. The coolest part from a technology perspective was an
interactive, rule-based eMortgage validator. Fannie Mae loved it.
- Virtual Knowledge Base
- My current project is one of the most challenging and best I have
worked on. The goal is to break down the current “stovepipes” for
information processing in the Intelligence community. To do this we are
creating an interoperability framework where producers and consumers of
information can plug-in to a virtual backbone, register their needs or
capabilities, and transact. The technologies involved are XML, J2EE, Web
Services, Taxonomies, Ontologies and robust Security via SAML. The team
is led by a seasoned government program manager, Ted Wiatrak, and my
fellow director, Danny Proko. Some of the other team members are people
you will learn more about in my two upcoming books as they are
co-authors: Kevin Smith, Clay Richardson and Donnie Avondolio. We are
making significant progress on these tough challenges and are determined
to solve this set of problems for the government.
Q: What are your personal goals 1, 3, and 5 years into the future?
A: A great question. For the next year, I am mostly trying to get settled in
this new area (building a custom home), finishing up two books, work, going
to a bunch of conferences and I may teach some college courses. Though, my
wife may force me to take a break!!
Within 3 years, I plan on getting my PhD and writing more cool software. I
hope to also get some time to write fiction but we’ll see.
Within 5 years, I will probably be starting another business. Maybe sooner, I
have not decided. Anyone who knows me, knows that I have no problem setting
goals. Sometimes, I put too much on my plate. This started right from
childhood; it may have something to do with me being a preemie. My mother
always said, “Your eyes are bigger than your stomach.” Oh well, I’d rather
have too many goals than not enough.
Q: What ten career pointers would you provide specifically to people who wish
to enter the computing field?
A: I know that my career success is directly related to following a set of
core principles. Here are the ones that have worked best for me:
- Integrity. You must
have high moral standards. You must build a solid reputation that is
based on integrity. Everything else pales in comparison to this.
- Problems are
opportunities. You have to enjoy solving problems. Be the one in a
meeting to volunteer to solve a problem. Stand up and take on the
burden. Paste this on your wall: SOLVE THE PROBLEM!
- Program Boldly. If you
are in a project and NOT trying to revolutionize the industry then you
are not the kind of team-member I want. Who would want to just be
mediocre? Not me. I’d rather make an ambitious plan and only hit the 80%
mark then shoot lower. Remember the expression: Ready, Fire! Aim, Fire!
- Ego-less programming.
Forget who solves the problem. Forget who gets credit. All that means
nothing as long as the problem is solved. Believe me, the people who
need to notice your accomplishments will notice them. Don’t be afraid of
holding someone else up who did good. When you are in a leadership
position, don’t be afraid of adopting another person’s idea. If it is a
good idea, then use it and give that person the credit. We need and want
more good ideas, not less. The rallying cry for every project should be,
“Have you made progress today?” Have you pushed the boulder up the hill,
even a little bit? If you did, you can sleep well for you will have
earned it.
- Do what you say you
will. This is similar to #1 but deserves another mention. When you make
a promise, live up to it. On technical projects, learn how to estimate
well. Don’t be ashamed to say things take time. Good software is like
good construction (and having switched home builders I can vouch for
this) … it takes time to do it right.
- If you want to have
people interested in you, do interesting things. Too many companies and
people do not understand the law of returns. This is the same people who
think happiness should be pursued. Wrong. Happiness is a byproduct of
doing something else. This is the same idea for a business and for your
career; do the right things and the rest follows. Diligently work hard
and you will be asked to shoulder more responsibility (via promotion).
So focus, on doing interesting things and interesting work will come to
you. Maybe this sounds like faith, but it works.
- ASK! Speaking of
faith, the bible says, “ask and thou shall receive.” I’ve found this to
be true. It does not mean you can make a wish and it will fall out of
the sky. It just means that there are so many doors closed to you
because you did not knock on them. Always ask - the worst that can
happen is they say no. If people don’t know what you prefer, or what you
like, they will just do it their way. So if you want to influence any
process, you best open up your mouth. This reminds me of one of my
favorite saying from Thomas Moore, “Silence means consent.” If you don’t
speak up, you consent to the course of action presented.
- Be a people person.
Nurture and respect relationships. I have been helped by many people in
my career. I owe them a debt of gratitude and my help in return. Be open
to help and be willing to give it in return. People are more important
than things. People are more important than schedules. I am a schedule and
list type person but I have learned that I will toss them aside, if I
have to help someone or talk with someone or just be with someone.
People are more important than things. You must have your priorities
straight.
- Peer mentoring. I have
written an essay about this on the Mcdonald Bradley web site (and there
are a few others there on other development topics). Everyone should
teach others. You learn best when you turn around and try and teach what
you have learned. Every night at the dinner table, I ask my kids, “teach
me something you learned today.” I believe that every company should
initiate a peer mentoring program and books like Java Pitfalls and More
Java Pitfalls are part of that philosophy.
- Have a sense of humor.
In Korea, a fellow lieutenant related to me her conversation with one of
my non-commissioned officers. She had asked him what he thought of me
and he said, “Daconta is by the book, but he has a good sense of humor.”
Be able to laugh and that includes laughing at yourself. I’ve done a ton
of ridiculous things in my life and I’ll do a ton more before I die.
It’s not making mistakes that matters, it’s what you do after you’ve
made a mistake. So, make sure your work and family life include laughing
and fun.
Q: For those who have long established careers in computing but wish to
change, what ten computing areas would you recommend that they should focus
on? What do your forecast as hot topic areas to start researching now?
A: Well, I am going to combine hot topics and recommended computing areas as
I think they are related. Here are the ones I am currently most interested
in:
- Semantic Web/
Taxonomies / Ontologies
- J2ME/wireless
development
- Distributed / parallel
computing
- Security
- Web services
- Online games
- Telemedicine /
Bio-informatics
- Software architecture/
design patterns
- Graphics
- Native RDF and XML
databases
- P2P
- Mobile Agents
- Natural language
processing (NLP)
- Content Management
- Artificial
Intelligence
Q: Developers want a single "meta-language" to develop user
interfaces that are cross-platform and cross-device. eXtensible User
interface Language (XUL), allows developers to break from platform
dependencies and develop rich, dynamic user interfaces in record time. XUL is
designed to work together with such technologies as Resource Description
Framework (RDF), XBL (XML Binding Language), JavaScript, XML (eXtensible
Markup Language), and Cascading Style Sheets (CSS). Can you provide more
details about your work in this area with examples? What are your top ten
tips for XUL?
A: I will be honest that I have been disappointed in the progress of XUL. The
concept is right but whether it gets mainstream adoption is not yet
solidified. I place specific blame for this at AOL’s feet. The book was
written on the presumption that AOL would adopt and use the technology it
owns. If AOL won’t adopt Mozilla as its primary browser (in its Windows
client), why should corporations? AOL has recently adopted Gecko for its
Macintosh client but has not yet committed to doing the same on its Windows
client. Until AOL makes a move on this, the jury is still out on XUL.
Q: You have worked extensively with advanced C++ programming features, such
as creating class-specific allocators, understanding references versus
pointers, manipulating multidimensional arrays with pointers, and how
pointers and dynamic memory are the core of object-oriented constructs like
inheritance, name-mangling, and virtual functions. What experiences and real
world examples can you share with our audience? What are your top tips for
C++ pointers and dynamic memory management?
A: It has been a while since I have done any major C++ projects. Almost all
of my new code nowadays is in Java. The C++ I now run across is just looking
at other people’s code.
All the dangers of C++ you mentioned, I have run across in real projects.
Pointers are like mathematics, you either understand them or you don’t. The
most egregious errors I remember with pointers is when junior programmers
would be passing arguments to a method that uses pointers and they would
guess at the correct syntax! Don’t ever guess! If you see a junior programmer
randomly trying combinations of *, & or [] then tell them to slowly back
away from the keyboard and give them a tutorial on pointers. So, you need to
have a good grounding in the basics and the rest can be acquired as needed.
Some simple examples are: what lvalues and rvalues and the relationship
between pointers and arrays.
For example:
int int_array[5] = {1,2,3,4,5};
int *int_ptr = int_array;
Does int_array[2] equal *(int_ptr + 2) ?
Answer: yes.
While the above is basic, if you don’t understand the relationship between
pointers and arrays for single-dimensional arrays, you can’t move up to
multi-dimensional arrays where the syntax gets worse. Then there are pointer
pointers, pointers to structures, copy constructors, memory allocation … and
every concept builds on the ones before them.
Of course, memory leaks and segmentation faults are the most common errors I
remember wasting hours debugging. I have been thankfully out of these types
of pitfalls for awhile by using Java; I may revisit them in the context of C#
to see what that universe is like.
Q: How would a C or C++ programmer move to Java and JavaScript? What examples
or scenarios can you provide from your rich store of knowledge in this area?
A: It is trivial for C programmers to move to Java; the only major hurdle
being learning the OOP concepts. The C++ programmer already knows the OOP
concepts but may miss C++ features like multiple inheritance or operator
overloading that are not available in Java. Personally, I never missed those
features.
In hindsight, I was slightly over-zealous about Java when it first came out.
I have learned since then that religious fervor over programming languages is
just wrong. I can now take a broader view. They all have strengths and
weaknesses. Also, some people are more effective in one language over
another. You must evaluate the right programming language based on the size and
type of project you are coding. If you are coding a quick prototype, it
probably does not matter what you code in. If you are coding a
mission-critical application, you must put reliability and robustness over
personal preference. For example, I am a big fan of strong typing. I believe
the minor amount of verbosity is well worth the compiler time checking of
parameters. Again, don’t think about how good a programmer you are, but what
the average programmer has to grasp.
Q: What are the most powerful features in the latest edition of Java and can
you provide examples of their implementation?
A: I have to separate Java from JavaScript to answer this as they are two
very different beasts.
Java is still a beehive of activity with the Java Community Process going
gangbusters. Some of my favorite new features are the XML APIs (the “JAX
Pack”), the JSP tag libraries, assertions, and the addition of regular
expressions. As for examples, I would recommend the free Java tutorials at
http://java.sun.com or some of the other free online texts.
Q: You are an international and well respected authority on Java development
and its pitfalls and shortcomings. With your extensive experience, you have
developed solutions and techniques for improving performance. What are your
top specific solutions for major Java programming problems?
A: The top pitfalls in Java would be threading problems (starvation,
deadlock, etc.), out of memory errors, null references, poor exception
handling, and non-intuitive APIs. There are pitfalls in every package in the
Java library so which ones effect you most depend on which packages you use
most.
Solutions to pitfalls depend on the simplicity of the pitfall. Simple
pitfalls usually have simple, universal solutions while complex pitfalls only
have techniques or workarounds that are more or less effective depending on
the context. An example of these two types would be String concatenation
(easy) versus OutOfMemoryError (context specific but still pretty easy). For
String concatenation you just don’t use the plus operator for concatenating a
String in a loop (use StringBuffer). For OutOfMemoryError you catch the
error, set references to null and call System.gc() but there is no guarantee
you can reclaim enough memory with this technique.
In the new book, More Java Pitfalls, we cover a much larger breadth of the
Java platform including J2ME, J2SE and J2EE. The book is complete and will be
out soon. I am real pleased over the quality of the pitfalls and the depth of
the explanations. We made a conscious effort to go into more detail to reveal
the root cause of each pitfall. More Java Pitfalls is significantly larger
than Java Pitfalls.
Q: Your books are highly recommended. What led you to write these masterful
works?
A: Most of my books have been direct responses to challenges I have faced in
my career in addition to enjoying teaching. I believe in standing up for the
average programmer and making his or her life easier. I am also opinionated
enough to call a spade a spade and damn the consequences. We have to push
hard for progress. I feel very strongly that there is such a thing as a
calling. Not a specific calling (though that is possible). A general or
universal calling: Make things better. That may sound corny, but I believe
it.
Q: Can you provide your views on J2EE and J2EE patterns?
A: I do not yet consider myself an expert on J2EE as I have not yet had
enough hands-on coding experience with it beyond trivial examples. For More
Java Pitfalls, my co-authors wrote the pitfalls in that area. However, my
initial impression of the EJB container is that it is a superb abstraction to
eliminate the complexities of thread programming (as well as other
server-side complexities). Remember, that I previously mentioned that
threading bugs was one of the top pitfalls -- so this directly addresses that
deficiency. Thus J2EE simplifies server-side programming and allows
programmers to focus just on implementing the business logic. As for J2EE
patterns, I recommend: EJB Design Patterns: Advanced Patterns, Processes, and
Idioms by Floyd Marinescu and Ed Roman.
Q: Describe future book titles and articles can we expect from you?
A: In the first quarter of 2003, More Java Pitfalls will be published by John
Wiley & Sons, Inc. In the second quarter, John Wiley and Sons Inc. will
publish The Semantic Web: the future of XML, Web Services and Knowledge
Management. After that, I will probably be updating the book XML Development
with Java 2, published by Sams; however, I may decide to wait until the
XQuery spec gets closer to a W3C recommendation. I really don’t like chasing
technology and try to avoid it if I can. Lastly, I am also considering an
interesting niche book on C# for later 2003. As for articles, I plan on doing
articles on Java Pitfalls, XML and the Semantic Web for various online and
print publications.
Q: Can you describe some of the projects that you have worked on and what
tips you can pass on?
A: I discussed several projects when discussing my background. To that I will
add some lessons learned from three projects:
- In 1989, my boss asked
if I could write a utility to automatically generate standard project,
file and method documentation headers for C source code. Having been
neck-deep in C for 9 months, I boasted that I could write the utility in
two weeks. Having never written a language parser before, the next two
weeks were very intense and the project ended up taking three weeks (no,
I did not use a parser generator and grammar as I would today). My boss
threw that estimation error back in my face several times that year. The
lesson learned was to never give off-the-cuff estimates. Now my
estimates follow a more disciplined methodology with a detailed task
break down into atomic-level tasks with known durations. Also, unknowns
are carefully listed and given cautious estimates.
- In 1997, I needed to
write a parser for the Air Force to parse Air Tasking Orders; however,
instead of the simplistic approach, I pitched and received approval to
develop a rule-based parsing engine driven by XML templates to handle
all United States Message Text Format (USMTF) messages. This actually
was a dual-template system, one template to drive the parser and a
second template to map the parsed fields to database tables and columns.
This sold me on the utility of XML (which became a W3C recommendation a
year later). Additionally, another lesson learned was that with some
innovation and ambition, you can turn a seemingly mundane programming
task into an ambitious piece of software. This was one of many exercises
in “programming boldly.”
- In late 1998, I was
asked to troubleshoot performance problems in an Intelligence processing
system. In training class, when all 20 students would attempt to perform
a query at the same time, the system would take up to 15 minutes to
respond to a query. While the system was coded well, there were several
key design flaws. In key areas the designers took abstractions too far -
isolating the database in an inefficient wrapper and wrapping a text
editor for simple parsing chores. While flexibility and separation of
concerns are generally a good thing, too much of a good thing is bad. In
the end, we sped up queries by up to 2000%. In hindsight, this was a
classic pitfall … something that looked correct but executed with
disastrous results.
Q: Please provide your views on UML, and XML?
A: Both of these are cornerstones of my development these days.
We use UML in every design document we produce. It is a de-facto standard and
I believe reflects the maturation of software engineering. As an aside, I am
in favor of licensing of software engineers. We need to step up to the plate
and take responsibility for our products. I am confident that I can engineer
robust software and am willing to get a license and be responsible for my
products. It is time we stopped stalling on this issue. Software is too
important to society for vendors to pass the buck -- does this mean the cost
of some software projects will rise? Sure. But the additional cost for proper
design and testing will be well worth it.
XML is revolutionizing the IT industry and it will continue to do so. XML
provides application-independence and easy separation of content from
presentation among other benefits. The value proposition of XML is simple and
intuitive. The benefits affect every consumer, business and government
agency. This is why it is critical for the business community to judge
Microsoft’s support of XML on whether it makes XML the default file format of
MS Office. If it does not, the .Net vision is just more “embrace and extend.”
I feel strongly about this because retarding efficient knowledge capture and
reuse to protect a monopoly is an affront to society.
Q: What are the hottest topics that all IT professionals must know to be
successful in the short term and long term?
A: In the short-term you should know: UML, XML, Web-services and either J2EE
or .NET. In the long-term, first look at the 15 topics I presented above.
Secondly, look at focusing on foundational skills like the Software
engineering body of knowledge (www.swebok.org), software architecture, and
design patterns.
Q: What would be your recommended top ten references for the serious
developer?
A: I have to give one plug here for our upcoming book on the Semantic Web.
This is the first book I have written that will have no code in it. It is
aimed more as a strategic conversation between a CIO and the CEO than a
tutorial. Having said that, I am excited and impressed by the number of
insights we reveal about the roadmap to the semantic web.
Now some others:
- The Mythical Man
Month, Brooks, Addison Wesley.
- The Design of Everyday
Things, Donald Norman, Doubleday.
- After the Gold Rush,
Steve McConnell, MS Press.
- Software Fundamentals:
Collected Papers of David L. Parnas, Hoffman and Weiss, Addison Wesley.
- Design Patterns,
Gamma, Helm, Johnson, Vlissides, Addison Wesley.
- The Practice of
Programming, Kernighan and Pike, Addison Wesley.
- The Art of
Programming, Donald Knuth, Volumes 1, 2, & 3, Addison Wesley
- Peopleware, Tom DeMark
& Timothy Lister, Dorset House Publishing.
- Mastering Enterprise
Java Beans, Ed Roman, John Wiley & Sons, Inc.
Many others not listed here … most of my books are packed
away … besides reviewing many books for John Wiley & Sons, Inc. and Sams,
I never hesitate to buy a book (from Amazon) on a new topic if I believe it
will help me on a project. Books are one area I never skimp on. One recent
book, I am reading from John Wiley & Sons, Inc. is The Art of Deception
by Kevin Mitnick. So far, it is superb.
Q: You have done extensive research with the Semantic Web and are a respected
authority in this area. Both RDF and XML Topic Maps are two competing but yet
could be complementing frameworks. Does your research indicate that one of
these has the better potential? And why?
A: These technologies are complementary but different. The question actually
needs to be expanded to taxonomies versus ontologies. It is important to
understand the difference between taxonomies and ontologies and how they
complement each other. A taxonomy is a hierarchical classification of things.
The most well-known example of a formal taxonomy is the library’s Dewey
Decimal system of subject classification. An ontology is a formal class model
which specifies classes, subclasses (inheritance hierarchy), properties of classes,
formal property constraints and formal associations between classes.
Taxonomies are for organizing things just as the directory structure (or file
system) on your hard drive is used to organize your files. An ontology is a
formal model of how things relate to each other that can be used for
inference. The important thing to remember is that while every ontology class
can be a topic in a taxonomy, the reverse is not true. For example, I could
have a topic called “hot items” which may be useful for organization but
irrelevant for inferences. In terms of discovery, taxonomies are well-suited
to browsing and ontologies are better suited for inference, association and
standardizing your domain entities. Now, in relation to the above discussion
XML Topic Maps are primarily for recording taxonomies; however, they have
some aspects of Ontologies. However, they do not nearly approach the Ontology
formalisms and the emerging “semantic algebra” in languages like OWL. I view
this as an example of a technology “over-reaching” beyond its original
purpose. We should say to ourselves, “small tools, small tools, small tools”
until we get it.
Q: We all know the web in its existing form is "out of control" in
its ability to locate useful resources. Do you believe that contributors to a
Semantic Web can easily be convinced to (XML) tag their resources based on
communities? And if not, what elements are missing?
A: I recently wrote a short paper on XML for the government, one section
involved misconceptions about XML. Here is my response to that very question
from the paper:
XML Misconception: Users will not tag their data.
Of all the misconceptions, this is the most serious. Luckily, the precedent
of HTML soundly refutes this sentiment. The popularity of HTML was driven by
grass-roots, non-programmers with a desire to share their work and thoughts.
In other words, for the average person the benefits of a world-wide audience
outweighed the learning curve for HTML tags. Applying this to XML, the chief
problem is a lack of understanding of the benefits of XML tagging in order to
generate the motivation to apply the effort. Since XML is a middleware
technology and possibly one-step removed from end-user presentation, it is
more difficult for the end-user to get instant gratification in applying
their tags. One way to alleviate this is to have both instant transformation
to an end-user form and most importantly an ability for users to see visual
links between their tagged data and others. Such visual links are just one
way for the end-user to understand how their individual effort in XML tagging
helps solve the needle in the haystack problem.
Q: What is the time frame when the Semantic Web will become a critical mass
for Internet users?
A: I don’t think the average user will be able to spot the transition as it
will be transparent. Since ontologies, like NLP, are most effective in closed
domains, we will probably first see the technologies spring up in intranets.
That makes the most sense, as proper use of semantic web technologies will be
a competitive edge. The trend toward corporate portals will facilitate this
as portals are the perfect semantic web front-end due to their role as
aggregator. Other trends will reinforce the cycle like office documents in
XML, annotations, and web-services. Successes will steam roll until Semantic
web applications are common place. Then more ambitious cross-domain projects
will be initiated and people will say, “Hey, the semantic web is here.” I
predict we will reach a semantic web tipping point for portals and intranets
within three years.
Q: If you were doing this interview, what five questions would you ask of
someone in your position and what would be your answers?
A: This is already pretty long, so I will only add two short questions.
q: What do you think of Mac OS X?
a: While I have used both Macs and PCs for a decade, I prefer the Macintosh.
Now that Mac OS X has Unix underneath, good Java support and a great GUI that
seamlessly integrates with all my digital devices -- what’s not to love? I
don’t mind paying extra for great design.
q: What technical innovation are you most looking forward to?
a: The integration of the PDA, cell-phone and MP3 player (I’m getting an iPod
for Christmas!). Combine a PDA, the iPod’s 20GB hard drive, a 3G wireless
network and easy blue-tooth connectivity and you have a compelling new
computing platform for personal and corporate knowledge applications. In
fact, think of it this way, when cell phones become serious computing devices
(in terms of resources), we will have more networked computing power than at
any other time in history!
Q: It’s a blank slate, what added comments would you like to give to
enterprise corporations and organizations?
A: I would like to close with four recommendations for corporations:
- Only adopt
technologies that support open standards.
- Reject vendor
lock-in.
- Begin internal
mentoring programs.
- Now is the time to be
investigating the semantic web.
To developers, I would urge them to be aggressive in
pushing technology. IT can deliver productivity increases to every employee.
IT can revolutionize education and training. This is a great time to be a
developer!
Q: Thank you for sharing your valuable insights with us today and we look
forward to reading your books, and articles.
A: It has been a pleasure. Thank you again for giving me the opportunity to
share my thoughts and experiences with the Information Technology community.
|
|