Tuesday, November 28, 2006

Google jobs adds everywhere...

It is the end of an era. 

In the old days, you had to know someone on the inside to get a Google interview.  Then the loosened up a bit... you just had to solve some difficult(ish) math/logic problem.

Now I see Google Seattle job adds on Download.com.

Wednesday, November 22, 2006

XQuery... worse late than never

I just noticed, XSLT 2.0, XML Query and XPath 2.0 Are Proposed Recommendations.  Since leaving MS, I've stopped tracking these.  It baffles me that XQuery is only just now 'shipping'.  This + the-mess-that-is-XSD spell the doom of XML.  This isn't just doom, like the Outlook spell-checker would try an correct the DOM to; this is real doom.  These standards to too complicated and too late.

I don't deny that big companies (and some very determined individuals) will implement them and people will use them.  Lots of people will likely be putting XQuery on their resume in 5 years.  What that will actually mean is that they used the 20% of the spec that SQL-Server/Oracle/DB2 implement.  It is like SQL but so very much worse.  SQL is complicated and isn't really standardized across RDBMS engines, but you can still learn the basics in an hour and be writing basic queries right away.  I worry that XQuery is so complicated that it takes days to comprehend.  That means that you may be able to write a basic query in 1hr, but there will be all sorts of edge cases you aren't aware of could actually impact your query.

I honestly think we would be better without XQuery.  Let the vendors think for themselves and see what customers actually use.  XQuery is a standard looking for a use, which is backward and guaranteed to produce a problematic result.

XSLT/XPath 2.0 is a harder one... There are a couple things that XSLT 2.0 adds that were desperately needed vs XSLT 1.0.  But I've managed a team implementing a commercial quality XSLT 1.0 implementation and that was a huge amount of work.  XSLT 2.0 is at least 4x as much work.  That is terrifying.  Why not just 'fix' XSLT 1.0?  It would be dramatically less work, and provide 80% of the gains, at 10% the cost.

The type support that XPath 2.0 and XQuery provide carries a huge cost.  Javascript/Perl/Python/Php/Ruby have demonstrated that you don't need types.  Maybe XPath 1.0 had issues with type support, but XML and type-lessness are such a natural fit.  I've played around a bit with E4X and find it very natural.  Microsoft's X-Linq is also about leaving XML type-less.

Types in XML is really about mapping XML to traditional relational models.  This should be solved by either improving the primitives provided by the database, or just having simple defaults for the obvious cases, and making everything else require explicit conversion.

I've found that I am using XSLT, less and less.  Depending on my needs, I either use DOM + xml-writer, or I'm using E4X.  XSLT is definitely the choice for document-y transforms (the priority rules and apply-templates is perfect for this), but I find it annoying to author (almost as bad as XSD). and anything more complicated than a page or so is write-once code.

Back to the XQuery pummeling... At this point, I think XQuery is actually a bad thing.  It is complicated enough that most open source implementations will be bad or slow, which means that Saxon will remain the only real implementation.  This means that people will continue to struggle with awkward APIs (the DOM) and in the end find their experience with XML less than appealing.  I think that a simpler query language, that maps better to existing common languages (java/ruby/etc) and is simpler to implement would enable a much large class of user to benefit from XML.

Monday, November 20, 2006

Walla Walla Wining

I spent the weekend in Walla Walla Washington.  I've lived in Seattle for 10 years, and can count the number of times I've been to Eastern Washington with just one hand.  Having grown up in New England, driving in Eastern Washington feels rather alien to me.  I'm just not used to such large open spaces, without trees!

Natascha and I went out there to do some wine-tasting.  We stayed at the Weinhard Hotel which isn't strictly in Walla Walla, but was close enough.  We hit about 4 wineries Friday and again Saturday.  I've now got 2 cases of good wines sitting in my basement.  Now the hard part... letting the best of them age.

Overall a good trip.  Highly recommended, especially in the off season.

Sunday, November 12, 2006

GMail j2me client

Brian asked if was able to get the GMail mobile (J2ME) client working on my E900.

I have successfully installed it, but I am unable to enter my password (because my password uses a symbol that I had been unable to enter to figure out how to enter into the password field). I spent all of yesterday at Mind Camp so I didn't get a chance to change my password. I just finished changing my password to something that can be typed on my phone and voila! It works! I now have gmail access on my phone.

Thursday, November 09, 2006

Podcasts bloat

I recently gave up on trying to get decent cell-phone reception with my Palm Treo and Sprint and switched to T-Mobile.  I specifically wanted a GSM carrier, which means T-Moble or Cigular, here in Seattle.  T-Mobile has better rates, especially for data (although it's data rates are much slower...).  I also needed a new phone and copied my lovely girlfriend and got an unlocked Samsung slider.  She got the D600 (which she loves), but I picked up the E900.  It is smaller ans just looks slick.

The E900 has a built-in mp3 player and the J2ME implementation has support for MP3 playback, so I've been playing with trying to build a RSS/Podcast reader that I could use to listen to podcasts while driving to/from work, or reading the latest news tidbits in the Starbucks line.  I specifically want it download the content and work offline.  I've got some really hacky bits that accomplish some of this but and really feeling the limitations of the J2ME platform.

This has also caused me to go look at the various Podcasts I listen to and review file-size, etc.  I was really surprised to see how many podcasters encode their dialog podcasts at 128kbps or greater!  That is just ridiculous!  I can understand why my Trance Tuesday podcast is at 192kbps (I am a music jukie, after all) but I don't understand why the Gillmore Gang is encoded at 128 kbps.  (I don't mean to call out Steve Gillmore as the only perpetrator, but his podcast is near the top of my iTunes list...) Many of my other podcasts are at 56kpbs or 64 kpbs, which is perfectly fine for human speech.  It also means much smaller files, so faster downloads, faster copies to you mp3 listening device of choice, etc.  People.. please!  If you are making a talk-show type podcast, choose an appropriate bitrate!

Security and Software Development

I just caught wind of Jeff Jones' post about SQL Server 2005 [via OS News].  Apparently, in the year since it was released, there has not been a single security vulnerability!  This is an amazing accomplishment.  SQLServer 2000 was the source of the vulnerability exploited by the famous Slammer virus.

The last 6 years or so that I was at Microsoft, my team reported into the SQL Server org.  (If you want to hear someone get riled up, ask most any XML-team member why their team is part of SQL Server after a drink or two.)  I was involved with the security reviews and improved development process that went into ensuring that  SQL Server would be rock solid and as secure as they could make it.  The SQL Server org isn't the only place this is happening either.  Similar practices are being used in Office and Windows.  I'm looking forward to seeing how Vista and the new Office fare, security wise.

If I were at Oracle in management, I'd be looking at the graphs Jeff shows and at the customer erosion to SQL Server and MySql and pondering some serious rethinking of your strategy.

Wednesday, November 08, 2006

Rumsfeld out!

Rumsfeld quitting; will be replaced by former CIA head
WASHINGTON - Defense Secretary Donald Rumsfeld intends to resign after six stormy years, President Bush said today.

This may be the best news I've seen today. I have very little faith in Rumsfeld's ability to lead out nation to any kind of 'success' in Iraq. I just pray that Robert Gates, the designated replacement, is strong enough to stand up to the politicalmaelstromm that is likely to result from yesterday's elections.

Tuesday, November 07, 2006

Java/Xerces 0, .Net/System.Xml 2

I've spent much of this afternoon trying to figure out how to use an XSD schema to get a pscvi-augmented SAX event stream. Doing this is .Net with System.Xml is _easy_. There are samples in MSDN. Writing this code would have taken me less 30 minutes.

Now I realize that I am lot more familiar with System.Xml and Xerces' schema APIs, but this should not be a hair-pulling experience! I've been working on this for hours and still have no idea how this is supposed to work. The only sample I've seen (xjparse) has to peek into the XSD documents to figure out if the target-namespace is empty or not. This if ridiculous! I'm amazed any Java people use XSD at all! If the libraries make it this hard, I'd be tempted not to touch it either.

Yet againt, .Net's XML apis are vastly better than Java. System.Xml.XmlReader is night-and-day easier to use than SAX and then there is this. Oh right... Java's DOM doesn't include the Microsoft specific helper methods 'selectSingleNode' and 'selectNodes'... so maybe I should make that Java:0, .Net 3.

I'm going to go back to pulling my hair out tying to figure out how to use a specified schema file to add PSVI annotations to SAX events (via the PSVIProvider interface).

I appear to have figured out the API incantations. I ended up downloading the latest sources and stepping through the code to figure out what was failing and searching around to figure how to make it do what I wanted. My working code looks like this:

SymbolTable symbolTable = new SymbolTable();
XMLGrammarPoolImpl grammarPool = new XMLGrammarPoolImpl();

if (xsdPath != null)
{
XMLSchemaLoader grammarLoader = new XMLSchemaLoader(symbolTable);
XMLInputSource xsdSrc = new XMLInputSource(xsdPath, null, null);
xsdSrc.setByteStream(new FileInputStream(xsdPath));
Grammar grammar = grammarLoader.loadGrammar(xsdSrc);
grammarPool.putGrammar(grammar);
}

SAXParser parser = new SAXParser(symbolTable, grammarPool);
parser.setFeature("http://apache.org/xml/features/validation/schema", true);
parser.setContentHandler(new MyHandler((PSVIProvider)parser));
parser.parse(systemId);

Friday, November 03, 2006

It's all about the Mobile

Opera releases a new Beta for their J2ME browser. Google releases a J2ME GMail client. It doesn't seem like that long ago that everyone was talking about how bad J2ME was... fragmented, awkward, slow.

I've got T-Mobile, so I'm not currently too worried about bandwidth costs, but I'm currious how bit-hungry these apps really are. This is definitely a space that I'm watching closely.

The real question: How are they going to make money off this? GMail Mobile doesn't include adds. Opera Mini is free and also has no adds... With GMail, the tie-in benefit is clear. Google is doing the polite form of embrace-and-extend. Microsoft has done this for years, providing lots of extras if you use their integrated services, but Microsoft is also famous for making it almost impossible to escape their embrace. With GMail, I use POP to backup all my GMail mails, so the only really issue is the email address.

Just as it tooke years for Google to emerge with such a winning revenue strategy for search (and online email, for that matter), I think we will see a great deal of gyration around revenue models for Mobile services.