Tuesday, June 17, 2008

Six Semantic Pieces

Useful content + Ontology description language + triplet tags + visual tags + UI code + personal search agent. Am I getting close? Encapsulate objects on data entry. Modular xhtml in presentation templates. Move along relationship arcs or standard top/left menu bar interface. Winning is the most efficient tagging. What's the best way to tie in executable code? Remote portlets? Exactly how bad can they muck up the equation?

The agent is pure software.

It seems to be the way things are going. There has been a lot of movement in the semantic web lately, and it looks promising. First you define your ontologies. Then you tag your content. Then you build a personal search agent to your preferences. Will it work? Some very smart people seem to think so. It's an awful lot of tagging, and the interplay between ontological relationships and the constantly changing web content is hard to fathom. For things like people directories it's straightforward enough (Jill is a member of HR, John is a member of Jill's team, this is Jill's phone number, etc) but what about scientific research? Is it just a brute force memex?

And if it does work, why hasn't it happened yet? The first barrier to entry is the engineering of ontological processing engines. Ontologies exist out there, and are easy enough to define, but to make them machine-processable, is a challenge. Then comes the monumental task of tagging all that content. Sees daunting, but the task of building a web site for every business in the country once seemed impossibly huge, also. If it's useful to people, they will do it. And may the best ontological tagging graph traversal engine win.

Monday, June 16, 2008

Pre-Semantic

Suddenly it seems what she did made sense, but not in the usual way. Structure, yes, important, but confusing to those who need to see it differently. Usable, yes, but not the way you want. Yet. But when other systems need to talk, there in parallel. Agents need only find it once. Tag. Describe. Relate. Triplets can do that. Using services as a central pivot not such a bad idea. Tag the functional mechanics in triplet spans, but keep the user friendly visible, with number one use case front and center. In the end it was not a failure, but a stake in the ground. Shape of things to come. We can use it after all.

Saturday, June 14, 2008

So Much Tech, So Little Time

Fifteen years after the public debut of the world wide web, the rate of technological change is only increasing. For a software engineer there are a number of things to know, watch, learn, and re-learn.

Start with the fundamentals: informatics, the hard science and math of software from O(n) all the way to NP-Complete, and keep up with the rapidly evolving standards on emerging technologies.

The Semantic Web stands ready to revolutionize the way we retrieve data across the web. They have a prototype knowledge base for life sciences.

OASIS (Organization for the Advancement of Structured Information Systems is working to promote open standards. Of particular interest is their web services standards. Remote portlets through web services fits nicely into a fully cross-platform SOA technology set. A complete list of standards can be found here.

IEEE SWEBOK (Software Engineering Body Of Knowledge) has everything you need to know about the software development process. Pick your methodology: Waterfall, Spiral, RUP, Agile, Extreme, Wing Dings, with adequate documentation it's all good.

There's the application servers:

IBM WebSphere

BEA WebLogic

BEA has a developer site with lots of good info. So does Apple.

As for web servers, Apache is the only one you need. I'll be upgrading to v2.2 soon.

Portal Servers! The framework is even more powerful with remote portlets and a workflow engine.

SOA - Service Oriented Architecture, the approach to software infrastructure is very important. SOA makes the integration of disparate systems much more manageable.

Data Services (DSP, Hibernate) and the associated XQuery and SQL. Database design is a big part of the job. Data dictionaries, meta-tables, normalized and denormalized relational tables. Data structures are the foundation upon which software is built.

Web Services and WS-* message level security. Transport-level security is handled at the system level, message-level security at the application level.

Workflow engines and the BPEL (Business Process Execution Language) specification.

Is just one development environment ever enough? How about Eclipse for Java, XCode for Objective-C, HTMLkit for web markup and scripting, XMLspy for XML.

For healthcare, there's the HL7 standard. As more advanced HL7 services are brought online, getting the right information to the right people at the right time will become automatic. Caregivers will have information retrieval agents that present the most relevant (AI inference) part of the medical record upon patient admission, and can also search and retrieve on command. There's CCR (Continuity of Care Record) already implemented in pilot programs for transmitting the medical record produced by each visit.

What about the social web, which in math terms is network where nodes are people, edges are personal relationships, and the distance between any two nodes is measured in degrees of Kevin Bacon (Bacon Units). Web 2.0? Or just a big advertising agency? Stay Tuned.

Webtop applications! AJAX, JavaScript, and the associated frameworks. This is how a web application can mimic the controls of any software UI, finally doing away with the limitations of page-level server requests.

All the meanwhile, one must keep working on better object oriented design and program optimization. The languages to be fluent in are Java, C, C++, Objective-C, C#. Scripting languages such as Perl, Python, Ruby, unix shell do certain things really well. REST interfaces, EJB calls, and web services are all good choices for different remote functions. The right tool for the right job.

I have a lot more reading to do.

Friday, June 6, 2008

Some Thoughts on Social Media

I probably shouldn't admit I have a facebook page. Or if I do, say it's for research purposes only.

This is, in fact, a new kind of media, so there's insight to be gained by its use. It has roots in collaboration tools and can be used as such; however, its intended purpose is "digital identity," to put yourself and your social circle online. You can now keep in touch with friends essentially forever, without effort, even if you move half way around the world. That alone is a rather astonishing new development.

Another unique property of social media is that audiences are built along relationship lines, so any message I send out goes to my friends first, then their friends, and so on. Not exactly the evening news. More like gossip on rocket skates.

Then there is the impression management angle, where a good storyline (the news feed, wall, posted items) can make you appear hip, one of the cool kids. For example, you might hide the news feed item about being an NSYNC fan, and move your Sonic Youth playlist to the top (or is Sonic Youth still hip these days?)

Finally, as people add likes and dislikes to their profile, those can be applied in various ways. Big money is betting on targeted advertising, and they're right. The $15 billion valuation of facebook is based on the per-share price Microsoft paid for a less that 2% stake. The revenue model is proven, but that doesn't mean facebook is worth as much as the Ford Motor Co. The impression I get is the facebook guys play hardball when it comes to capital investments, and Microsoft doesn't mind overpaying for early entry to the market.

Nobody really knows what all this will look like. So any wacky idea is as likely to be right as the next. Also, there are still a lot of competitors. There hasn't been a big shakeout yet, meaning it's too early to tell. I recommend checking out Ning (http://www.ning.com/) for those interested in the mechanics of it.

Related Stories:

How To Make $500,000 A Month On Facebook (Silicon Valley Webguild)

Don't Just Follow the Latest Media Trends (Advertising Age)


Tuesday, June 3, 2008

Goosh - The Unofficial Google Shell

Someone wrote a command line google interface. A command shell. To google. It's cool.

Go to http://goosh.org and see.


Goosh goosh.org 0.4.4-beta #1 Tue, 03 Jun 08 22:59:00 UTC Google/Ajax

Welcome to goosh.org - the unofficial google shell.

This google-interface behaves similar to a unix-shell.
You type commands and the results are shown on this page.

goosh is written by Stefan Grothkopp <grothkopp@gmail.com>
it is NOT an official google product!

Your language has been set to: en (use lang to change it)

Enter help or h for a list of commands.

guest@goosh.org:/web>