Careers: Interviews
Architecture Guru: Michael Daconta
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.
|