Tuesday, November 18, 2008

Catchup on Updates

I finally got around to installing Ubuntu 8.10 and Eclipse Ganymede. I'm pretty much starting over with Ubuntu, as it's going to be a server project in parallel with OpenSolaris. So far I'm still planning to do the bulk of my development in mach-BSD, that is OS X.

Still working on the Swing app with Netbeans. UI v2 will feature new embedded browser panes and more controls.

Monday, November 3, 2008

Predicates Chosen

Orthogonal technically means "at right angles" but I've heard the term used loosely to mean what I was driving at: providing maximum coverage of the problem set with the least amount of overlap. Conceptually, logical right angles might allow one to compose a two-element query where each element can be adjusted independently with linear variation in the results. Conceptually linear? That's why it's more a contemplation, a notion, rather than a rigorous proof. These thoughts lead to what I can call my best educated guess.

After much contemplation, I have my predicates.

Saturday, November 1, 2008

My ideal MacBook

Sweet new macbooks, faster bus and memory, new trackpad, and what i really need in the dark, a backlit keyboard. Sure would like to gets me one with 4GB RAM and the largest HD option. Then I'd install some stuff...

First VMWare, Windows XP and Ubuntu 8.10 (desktop and server), bringing the number of operating systems on this laptop to 4.

I'm partial to BSD, so I'd pretty much have my development tools in OS X.

MySQL for the data store...

Eclipse with JBoss, Hibernate, Jena, Jersey... also in Eclipse, pydev and Oxygen plugins.

Netbeans with Glassfish and those same framework libraries...

XCode with the iPhone SDK.

Glassfish and JBoss on the Ubuntu server, where I deploy the applications I build. The Ubuntu desktop iscuz i can haz a learneding enviroment for Ubuntu.

Windoze just in case, and until I find a suitable open source replacement for Visio.

Okay, I just described my current black macbook, but the 'lumin' ones are sweet. That's what I'd do with it.

Monday, October 6, 2008

Orthogonal Predicates

A first foray into semantic web could be a small set of initial predicates. For example, a museum might ask what are the most notable ways two artifacts, events, or people can be related. Person A invented artifact B, and so on. The question then arises, what is the most useful small set of predicates for a given application? How do you minimize their number while maximizing functional versatility?

Tuesday, September 30, 2008

RDFa and Its Subsets

For any semantic web site, RDFa or similar tags will be added to web pages multiple times for multiple reasons. Families of predicates can work together, and predicate relationships not used by a particular application are effectively invisible to it.

For example, a person looking at the web page, i.e. the visual markup, would not see the non-visual RDFa markup. Likewise, one app might use location-centric relationships and not care about accompanying information. Another app might look at the same page and grab only the bibliographic connections. Part of installing a semantic web application, then, is to initialize the pages with necessary markings. The surface area of a semantic web application is the complete set of tags that it reads and writes. Tags are added, modified, and deleted as the business evolves changes.

Non-interference is an important property.

Interoperability of Domain-Specific Ontologies

Families of predicates can work together, and predicate relationships not used by a particular application are effectively invisible to it.

As the simplest possible example, compare visual markup and RDFa mixed together on the same XHTML page. A person looking at the web page is utilizing the visual markup, but would not see the non-visual RDFa markup. Likewise, one app might use location-centric relationships and not care about accompanying information. Another app might look at the same page and grab only the bibliographic connections. Domain-Specific Ontologies can work independently in this way, each with its own XSLT data extraction.

Friday, August 29, 2008

Now that Oracle Bought BEA

This is their application stack road map or whatever. The former BEA products are circled.

Oracle has more information on their road map.

Tuesday, August 12, 2008

Mac Isn't UNIX Under The Covers

It's UNIX. Those covers are UNIX applications.

Friday, August 8, 2008

My MacBook is a Programming Machine

I'm really happy with the way my MacBook is shaping up. It's jet black and looks slick. It has 4GB of memory, and when they say it's UNIX under the covers I say rip off the covers. First, the iLife stuff needs to go. That's not why I bought a sleek black laptop and slapped a big white UNIX sticker on it. Yes, it still does iTunes and photos and all that, but that's all in the Applications folder. My OS Dock, that most prominent feature of the Mac GUI holding a dozen or so easy-to-reach applications on a cool-looking translucent shelf? Mine is arranged a little different from most.

Starting from the right:

  • X11, because unix guy needs his terminal windows
  • Eclipse is my most-used Java development environment, running Tomcat for quick MVC work and JBoss for the more involved JEE.
  • Oxygen XML Editor
  • XCode with the latest SDK for the iPhone (which is in fact the world's best remote control)
  • Google Earth
  • Firefox
  • NetBeans, with built in Glassfish JEE server
  • Emacs
Starting from the left I have the OS management stuff:
  • Finder is of course the quickest way to look through stuff
  • Spaces for even more desktop room
  • VMWare Fusion - currently only Windows XP is installed, but I have OpenSolaris ready to install and should probably download Fedora at some point
  • System Preferences, which I always seem to be tweaking for some reason or another
I run MySQL from a terminal window because I feel I have more control that way. And then there's iLife or MS Office in the Applications folder if I ever need them.

Saturday, July 5, 2008

The Schema Is Data

Apparently a defined ontology is not a precondition of semantic data capability. The process of tagging content relationships with triples (or n-tuples in the MetaWeb system) defines ontology on the fly.

Schema is data. Data defines schema. Graph stores are fundamentally different from relational data stores. Of course, it seems so simple now ;)

Blame my vast experience in the SQL methodology: define a data structure optimized to certain use cases, and your application is locked in. With semantic n-tuple tagging, the data structure is constantly changing, and searches navigate the relationship edges regardless of the underlying structure. As tags are added, the ontology grows. Two different ontologies can be combined by defining relationships between related topics and combining identical topics. In this way the relationship graph grows and new data paths are created.

The RDF triple can be described in terms of traditional data stores if you consider cell-by-cell storage; the subject is the row identifier, the predicate is the column identifier, and the object is the data field. In RDF, this is represented in three URIs. Triples are mathematically extremely simple and powerful, but for those of us who made a career in traditional data systems, it takes some getting used to. But the upshot is SPARQL can execute natural language queries with a fraction of the complexity required with traditional SQL.

How promising is it? I hear NASA is creating a semantic web knowledge base to power a 30 year plan to put a man on Mars. A biosciences knowledge base went online a few weeks ago. Everyone is asking about it, and the semantic web standards are still being defined.

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


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.


Monday, May 19, 2008

Google Health Launches

It's live. Open for business. The first two hospitals to offer a CCR export to your PHR: Cleaveland Clinic and Beth Israel. More will follow suit, I'm sure. I wish Google luck and may the best PHR win.

The Announcement

The blogs are a-twitter, sort of... Technorati has a few hits.

There's also a snarky but good discussion on this blog by a local med student. Go Trees, beat Cal, etc.

The app itself has a ways to go. Google Minimalism probably isn't what I want to manage my health. In fact, it looks like the application my team built five years ago, but less sophisticated (sorry Google -- you know it's true). For one thing we apply existing access rules derived from the EMR itself. We also have the best find-a-doctor, but whatever. Clearly Google's intent is not to create a consumer product, but a reference implementation for all those start-ups and dreamers looking at the size of the health care market right now. At this point anyone could hit on the killer app. All you need is an SDK, the right idea, one computer and a lot of gumption. Nobody knows what online health care will look like yet. It's sure not going to look like those paper charts designed in the 1800s that doctors will continue using until we come up with something better.

Sunday, May 4, 2008

We Are All Proactive Now

I think the term "proactive" should be taken off the list of buzzwords. I have heard that word so much lately I think we should just bite the bullet and make it an honorary member of our everyday lexicon.

I remember a time when the word was reserved for thinking outside the box, stepping out of the comfort zone, shifting the paradigm, or (more specifically) incompetent people trying to sound smart. Lately, though, with increasing productivity demands of the modern workplace, the word is being thrown rapid fire around every corner of the office. No longer a special case, proactiveness is now expected as an everyday proactivity. And it's become a freebie score in Buzzword Bingo.

I don't see why proactive is such a special concept anyway, it only means doing things actively. Can things be done any other way? Sure, I can be inactive or reactive or even surrealistically quasi-active, but when what you're after is good old fashioned get-r-done gumption-fueled tenacity, nothing beats being proactive.

Besides, when you think about it, proactive is really just a polite way of saying, "You know what to do, just get off your ass and do it!"

At my workplace, we are constantly reminding each other to be proactive.

The Pilot Collection Grows

I was down at Weird Stuff yesterday and they had a huge box of old PDAs. Now this is one focus of my collection, so sifted through those boxes until after closing time. I found a nice set of m-series devices and an original US Robotics cradle. Here you can see my newly expanded collection arranged on the coffee table.

Starting at the bottom left, going counter-clockwise: US Robotics Pilot 1000, the grand-daddy of them all; A Palm IIIe Special Edition (this one got me through the 90s in geek style); a Palm VII Wireless; Palm IIIc (their first color PDA), and finally the m-series: m100, m150, and m130.

Sunday, April 20, 2008

A Delicious Beverage

Coupa Cafe in downtown Palo Alto likes to get fancy with their beverages. A latte like this plus the wi-fi makes it a good place to unwind after work.

Thursday, April 17, 2008

King of Kong

Turns out the guy who wrote Donkey Kong for the Atari has blogged about it.

Wednesday, April 16, 2008

Classic Computers and Me

You may be wondering about the Donkey Kong.

Like many things, it started in the '90s. That's when I found myself in Silicon Valley surrounded by all these strange new "computers." Not traditional computers, but compu-gadgets. Things that go beep. Some fit in the palm of your hand and they were being invented all around me, I only had to reach out and grab them. Next thing I knew, I had a nice little collection of devices. Hey, my friend would say, if you like that you'll love this. Next thing I know I own Data General DG-1, fully loaded marvel of engineering and circa 1984, a miracle of rapid obsolescence. You can see where this is going. I began collecting anything interesting or unusual. I learned computer history, serial numbers, feature sets and options, prototypes. Study, tinker, hack. I signed up for volunteer work at the Computer History Museum where I learned how to properly handle, restore, and preserve them.

These are some classic touch-screen devices from the 1990s and the genesis of this hobby. On the left is an Apple eMate. They took a Newton and fit it into a laptop form for kids. This one is a prototype and was field tested by the 11 year old daughter of one of Apple's engineers. It still has a letter to mom and dad and some doodles in its flash memory. You can see an Apple promotional wristwatch next to it. In the middle is a 3Com Audrey, an "Internet Appliance" built in the Judy Jetson style. It has a wireless keyboard and when you have email, the clear stylus on top blinks like an antennae. To the right is the Palm IIIe Special Edition that got me through the dot com bubble with hip tech cred. I had the Star Trek communicator sound effects installed. I flipped it open and said beam me up Scotty way more than I should have. I have since found a US Robotics Pilot (the predecessor of them all!), a IIIc Color, and a Palm VII Wireless which has special sentimental value as I built the developer site for that puppy.

This Apple //c with the rare flat-panel display was just a good deal on eBay. I couldn't pass up the chance to own one! It's complete with the original software, manuals, carrying case, and a lapel pin.

Finally, my most funnest toy...

Have you played Atari today? That was their slogan. That's a 2600 and a 400 with a large collection of games and a 1979 color television, all on a rolling TV cart. Nothing in this picture was built after 1984. It's a period piece I put together for the vintage computer festival. Everything is there and it all works. I enjoy a game of Joust once in a while. Or Warlords if company is over.

You can see in the view from the top, it has the vintage switches on proud display. Even some Atari corporate swag. Now that's home computer history!

Wednesday, April 9, 2008

We Are All Architects Now

Computer Science legend Edsgar W. Dijkstra expounds on overuse of the term software engineer. Apparently at some point the job title of analyst/programmer didn't sound good enough so with a little help from HR, programmers became software engineers. Dijkstra's laments that engineer used to imply a master's degree and now it's a community college certificate. Nowadays even engineer doesn't carry the prestige it used to, and everyone is clamouring for the title software architect. You lose, Dijkstra!


Monday, April 7, 2008


Watching  TV on mute, playing music, browsing the web, and other fun activities together as one composite entertainment application. A home appliance mash-up. 

Saturday, March 22, 2008

Linux on the new Macbook

I'm writing this email using 64 bit Linux on my MacBook. I found the instructions here:



Took a while to get wireless working. For older MacBooks you can compile your own device driver. Easy, huh? My wireless chipset is not natively supported yet. I had to use a wrapper around the Windows driver.


Next step is to install BEA development tools. I found instructions here:


Downloading now (via wireless!). We'll see how it goes.

Thursday, March 20, 2008

Ten Years in Silicon Valley

Originally written Dec 31, 2007:

Dec 31, 1997 - Dec 31, 2007: Ten Years in Silicon Valley

My Top Ten Silicon Valley Memories of the Past Ten Years.

10. Riding on top of a Battlebot in the parking lot yelling yee-haw ala Slim Pickens in Dr Strangelove.
9. Star Trek parties with my neighbors, who converted their family room into a star ship bridge, complete with giant view screen, captain's chairs, working computer terminals, simulated ion tubing, and the latest in lite-brite display technology.
8. Early admittance to the vintage arcade festival, where I played Asteroids in front of a wall of cheesy 80s music videos.
7. Playing with some of the first portable MP3 players. They held like 5 or 10 songs!
6. Late night at a Dot-Com Launch Party, holding a ten foot length of drink tickets acquired from Jello Biafra, buying drinks for every increasingly attractive girl in the place and yelling, "Oh yeah! The stock market hasn't been this good since 1928!"
5. Talking to a Palm Pilot engineer about the new Palm III, looking and opening exactly like a Star Trek communicator, with sound effects, asking whether it was really quite nerdy enough. And if you must know, I had the IIIe Special Edition. With sound effects.
4. Telling Steve Wozniak -- notorious prankster -- about a computer prank I liked to pull when I was a kid.
3. Summer 1999, Friday, 5pm, sitting outside our downtown office, sipping wine and discussing the past, present and future of the web.
2. Late nights, coding furiously, hopped up on organic Kona coffee (Rooster Farms, one of our early e-commerce customers, paid us in coffee).

And finally, my top silicon valley memory of the past ten years...

1. Driving into a parking lot in Stanford for the first time around 2pm on New Year's Eve, dreaming of the future.

Garfield minus Garfield

Something else that would never exist without the Internet...