Thursday, November 27, 2008

Jackson: on with the show, 0.9.4 is here!

In honor of all the fallen tasty turkeys, the Jackson Project team is proud to present release 0.9.4 of Jackson json processor. While not as much to be thankful about as the forthcoming 1.0 release candidate, this is nonetheless a significant upgrade (I call it a "mop-up version"), and upgrading is strongly recommended for all users.

This new version has following things going for it:

  • Simple yet elegant way of adding support for new on/off features (using enums JsonParser.Feature and JsonGenerator.Feature)
  • Optional support for non-standard Json comments (c and c++ style), requested by many users.
  • Clear definitions of if and when parsers/generators close the underlying streams/readers/writers, as well as matching feature (JsonParser.Feature.AUTO_CLOSE_SOURCE and JsonGenerator.Feature.AUTO_CLOSE_TARGET) to further force specific behavior
  • Copy-through methods added to JsonGenerator, which allow for single-call copying of single source events, as well as full sub-trees (Object/Array with all the contents)
  • Efficient and versatile Base64 content write support for JsonGenerator (versatile meaning that couple of non-standard variants, such "MODIFIED-FOR-URL" are also supported, easy to add more
  • Jars now double as OSGi bundles, full metadata added to run on OSGi containers (briefly tested with Felix CLI)
  • Vastly improved (professional strength) unit test suite (code coverage at around 70% and going up)
  • A few bug fixes, many resulting from extensive testing: found problems mostly related to UTF-8 decoding issues

As usual, check out the release notes for details.

And then on to the forward-looking statements. This release was specifically focused on clearing up the most pressing feature requests and bug fixes, so that the last significant thing to add for 1.0 -- data binding for Java beans -- can be added. So the next thing to rewrite will be "java type" mapping, so that it will support mapping data to and from regular Java beans, similar to XStream or JAXB (although with much more limited feature set and configurability). As usual past performance is no guarantee of future etc etc, hold your breath at your own risk.

Friday, November 21, 2008

Woodstox: first Release Candidate for 4.0.0 (aka "Woodstox-core-3.9.9-1")

It has been quite a while -- the last major Woodstox release (3.0) was two years ago, and the minor one (3.2) almost a year ago. But now the First Release Candidate of Woodstox 4.0.0 is finally out. It is versioned as 3.9.9-1 to try to make it easier to use versioning facilities of Maven and OSGi bundle resolution (i.e. to avoid these messing up operation when 4.0.0 finally arrives)

So what is new with 4.0.0? Here are the major things that come to mind (for the rest, check out release notes)

Typed Access API

I have already mentioned Typed Access API a few times, since I think it is The Thing with Woodstox 4.0. To quickly recap features, it:

  • Supports reasonable subset of Schema datatypes: Scalars (booleans, ints, long, doubles, QNames), arrays (space-separated ints, longs, doubles) and Binary (base64, with variants including "URL-modified")
  • Supports reading and writing o
  • element content and attribute
  • and does all of above Conveniently AND Efficiently

My hope is that this will be a real boon for data binding; as well as providing alternative for MIME-attachment - based binary data passing. With Woodstox 4.0 you should be able to embed binary data efficiently(-enough) to forgo other workarounds.

Typed Access API is now integral part of Stax2 API, as of version 3.0.0.

W3C Schema Validation

As to Schema validation, well, it has been coming for a while. I suspect many users find it useful; and there have also been some improvements to existing validation support (DTD, RelaxNG) as a result of adding Schema validation.

OSGi support

OSGi support is another things that I am actually quite excited about: OSGi is a great idea in itself, and I am happy that now Woodstox will support it explicitly and hopefully well. OSGi support includes post-processing of bundled MSV jars as well.

Stax2 API (v3.0.0) with bundled Reference Implementation

The Stax2 API has been improved a lot since Woodstox 3.2 (which bundled Stax2 api v2.0.0). For Woodstox 4.0, Stax2 API is provided as a full-featured stand-alone OSGi-enabled reusable artifact. And it also comes with fairly extensive Reference Implementation, which allows for easy/easier implementation of Stax2 by other Stax implementations. StaxMate project, for example, will use it to provide Stax2 adapters that wrap regular Stax 1.0 implementations to offer significant subset of Stax2 functionality. And the Ultra-High-Performance Stax implementation called Aalto will use Stax2 RI to get a fully-featured Stax Event API implementation essentially for free.

Interoperability Improvements

In addition to easier implementation of Stax2 API (which should foster interoperability between Stax implementations) via Stax2 RI, DOM interoperability has also been significantly improved. Namespace-repairing mode works well, text coalescing mode is implemented as well as the Typed Access API methods. Unit test coverage has been upgraded to be comparable to testing of "native" Stax parser/writer functionality, for basic use cases. So you might even consider using Stax2-on-DOM just to be able to access typed data conveniently via Stax2 Typed Access API.

Internal Cleanup

Internally Woodstox-4.0 has been significantly refactored: lots of unnecessary legacy code was killed, some moved to Stax2 RI, and Javadoc comments should be much improved. Also, the baseline JDK requirement was lifted from 1.2 to 1.4 (which enabled some of the cleanup). This should not be a huge change as most users have hopefully migrated to 1.4 and beyond by now. For Woodstox 5.0 baseline will move at least to 1.5, to be able to use Enums, and just a little bit of generics, but for now 1.4 will work fine.

Anything Else?

Above is just the overview, of course -- there are dozens of other visible improvements (check the release notes), as well as significant internal cleanup and refactoring, which should make 4.0 well-maintainable and allow for further improvements.

At this point I am excited about upcoming 4.0.0 release. Especially, if you ever work with actual typed non-textual data (which should be true for most common Woodstox use cases), you really should try out the Typed Access API. You will like the way that works.

... and now I will be off to start work on StaxMate-2.0.0 which will make good use of Stax2 API v3.0.0.

Stay 7un3d!

Friday, November 14, 2008

First Week at the New Gig

After departing from my previous place of employment last week, this was my first week at the new job, at a Company Whose Name Shall Not Be Used in Blogs (... restriction that may or may not be part of my employment contract -- but check out my LinkedIn page if you want to know more). Yay! Let's hear if for the Change One Can Believe In.

While it is definitely just the honeymoon period -- and hence all comparisons would be biased and pointless -- I do like the change of pace a lot so far. After extreme complexities at the World's Biggest On-line Retailer (where domain truly is utterly complicated, due to both essential complexity and additional overhead), it is delightful to be able to harbor illusions of possibly understanding end-to-end picture at the new place. There are obviously many systems to consider, but platforms, languages and packages in use are so much more familiar and mainstream than last time I had start from square 1. It is still easy to see purpose of each and every cog of the clockwork; as well as have easy (enough) initial ideas regarding how to build new things and resolve existing problems. And although I have yet to locate a single instance of wstx-3.2.4.jar or such, components seem reasonably up-to-date, and having been chosen quite sensibly. About the only scarily complicated thing seems to be the best practices of using the source control management system (which is more complicated than I have seen in other places, much less than used myself).

But the coolest thing is that potentially I might get to work on two of my top areas-of-generic-interest: large-scale/high-through web services and IR-based technologies (and that's about the extent I can talk about those things -- just that there is something of interest over there). Assuming I can get enough focus this could lead to something interesting, cool AND valuable.

Anyway, I have great expectations for this new beginning.

Friday, November 07, 2008

The Concession Speech

(for context, check out this posting, and if reading long after November 2008, US history news for November 4th, 2008)

I have ALWAYS wanted to give a concession speech (heck: I'd settle for an acceptance speech if I had to). So now is the perfect opportunity to mash up one for the occasion.

ps. for anyone who wouldn't otherwise spot it, please note that I am using the most sincere form of flattery -- you should be able to identify the original speech quite easily: no, I am not that eloquent. Great speech, very glad to have heard it. And apologies for my crude attempts at crafting relevant overrides.

Concession Speech by sw. eng. Also Known As CowtownCoder, I-WA

Thank you. Thank you, my friends. Thank you for reading through this email on this rainy cold Seattle day.

My friends, we have -- we have come to the end of a long journey. The Pager has beeped, and it has beeped loud and clear. A little while ago, I had the honor of lunching with my manager and team mates, fellow Amazonians -- and to inform them -- "of my decision to pursue other opportunities" (AUDIENCE: boo! boo!) -- please -- in this great city that we all love.

In an employment as long and demanding as this one has been, my peers' success alone commands my respect for their abilities and perseverance. But that they have managed to do so by inspiring the hopes of so many other Amazonians who had once wrongly believed that they had little at stake or little influence in the affairs of this company is something I deeply admire and commend them for achieving.

I recognize the special significance this holiday season will have for all Amazonians and I envy the special pride that must be theirs this year. I've always believed that Amazon offers opportunities to all who have the industry and will to seize it.

Let there be no reason now -- let there be no reason now for any Amazonian to fail to cherish their continued employment in this, the greatest company around Seattle International District.

It is natural -- it's natural tonight to feel some disappointment, but come Monday you must move beyond it and work together to get Christmas shippings moving again. We fought -- we fought as hard as we could. But customers just keep on coming.

And though I fell short of the 4 year employment goal, the loss is mine, not yours.

I am so deeply grateful to all of you for the great honor of working alongside, for comraderie and for all you have done for me. I can even forgive having had to learn how to use Brazil version sets, if you give me enough time.

I am especially grateful to my family for their continued support of my gainful employment. You know, employments are often harder on an employee's family than on the employee, and that's been true in this case.

All I can offer in compensation is money I received for my RSUs, and the expire Bus Pass from 2007. But absolutely no promise of peaceful years ahead. (AUDIENCE: laughter)

AUDIENCE: (Chanting) Bezos! Bezos!

I would not -- I would not be an -- an Amazonian worthy of the name, should I regret a fate that has allowed me the extraordinary privilege of serving this company for almost four years.

AUDIENCE: (Chanting) S3! Prime membership! Kindle! Mechanical Turk!

Tonight -- tonight, more than any night, I hold in my heart nothing but love for this company and for all its employees, whether they supported cool new and tried-out working ideas or suffered from severe case of NIH syndrome. I wish Godspeed to everyone remaining committed to writing and demanding writing of high-quality code, no matter what the obstacles.

And I call on all Amazonians, as I have often during my time there, to not despair of our present difficulties but to believe always in the promise and greatness of Amazon, because nothing is inevitable here. Not even mandatory use of bloated proprietary data formats instead of open standard ones.

Amazonians never quit (except for me). We never surrender. We never hide from history, we make history. And have Fun.

Thank you, and may the Flying Spaghetti Monster bless you! And Amazon too! Thank you all very much. Do not forget to tip the waitress! No, I will not be here next week!

Thank you, you are all too kind. No I mean seriously. You are. Go home now!

My Last day at Amazon

This is a bittersweet week in many ways. Today I left after about 900 work days (and couple of on-call nights).

It is natural to have mixed feelings after spending multiple years doing something specific: I had my Amazon interviews around time of the US presidential elections of 2004, and now left after that particular national nightmare finally ended. On positive side, at least I did not leave a legacy behind...

Amazon is one of those places that you just love to hate ("can't live with it, can't live without"). For those that are not familiar with the software company, it is a place of extremes: fundamental insights mixed with sizable stupidities and (often baseless) arrogance, massive raw talent and potential greased with misguided cultural legacy (frugality as in cheap, "just do it" attitude abbreviated as NIH, and so on). So you could say that it is blessed with lots of good people and cursed by habits that some of the very same people have developed over time. I won't go into gory details: if you have ever worked there you know what I mean; and if not I might not be able to explain.

But beyond being exciting and frustrating place of highest degree, Amazon is Unique. Few places can offer the scale and scalability problems to tackle. Very few. Most companies just try solving all problems by the Standard Hammer: big-ass relational database, running on colossal servers. Not so at Amazon, for both better and worse. And if we are lucky, uncannily smart folks from Amazon Web Services will soon offer us with vastly extended set of good scalable building blocks that will finally obsolete many of these worn relics from 70s, such as relational databases.

So what it all means is that it's such a trip to work there for a while -- try it and you'll feel like having drank multiple Pan-Galactic Gargle Blasters, on your way to Mars and back. So I thoroughly recommend trying it out, if you are young and have no history of heart problems. Heck: even WITH heart problems it might be worth it ("what doesn't kill you makes you stronger"?). No pain no gain.

So how do I really feel now? Perhaps like David Bowie put it: "Unwashed and Somewhat Slightly Dazed" is close. But be sure to check out the next blog entry here for another perspective.

Related Blogs

(by Author (topics))

Powered By

About me

  • I am known as Cowtowncoder
  • Contact me
Check my profile to learn more.