Kevin J. Jones

Intel XSLT 2.0

Posted in Intel, XML, XSLT 2.0 by abahtowt on January 3, 2010

Just before the christmas break we released a beta of the new Intel XSLT 2.0 processor. This has been one of the major developments running in my group last year. You can find it over here.

The processor is really just a part of the SOA Expressway XML software stack that we have unbundled to allow people to play/test with. There is no intention at the moment to turn this into a publically available standalone product, the market for such is simply not viable for large commercial vendors. Michael Kay talks about how XSLT 2.0 was just too big for the “weekend coders” to see many open source implementations of XSLT 2.0 emerge. I don’t think you can argue with that one although I might have liked to have tried for the hell of it if I wasn’t busy with other things. That’s how I got started in XSLT/XML development some nine years ago now, by just getting on with it.

We have plenty of work left to do on XSLT 2.0 to create a really great feature for SOA Expressway. Conformance today is very good but the performance needs some extra work. This processor has to hit some pretty high targets to match our tuned XSLT 1.0 performance levels. We have talked about if it makes sense to add XQuery, that’s not such a big development but we have not concluded it’s needed yet. The processor is not yet schema aware although most of the plumbing is in place to make that happen so I would hope we can complete that soon.

It’s hard in software to ever say you are done, but with our XML Software we are getting closer and closer. The benchmarks measured in cycles, memory & scalability have shown improvements year over year to the point of having little serious competion on technical merit and the feature gaps have shrunk very small. My one last goal is to see more profitable use being made of it, I think we are well positioned to get that this year as well.

Another darn car

Posted in Westfield by abahtowt on January 2, 2010

Been a long time since I last posted here. I have written a couple of bits over at the Intel site but have rather been neglecting things.

I have somewhat unexpectedly acquired another Westfield as you can see in the pic. The one on the left is the one I built and then upgraded to an 08 Yamaha R1 engine. This ran pretty well last year, I won the sprint/hillclimb class in the Westfield championship although the competition was a little thin sometimes.

That reminds me of a pearl of wisdom that I need to not forget, when making plans always factor in how your competitors might change to counter. Last year at least some of class competitors decided simply not to play after this car proved reliable, which I have to take as at least a minor complement even if it did take some fun out of the season.

The new yellow car has a Suzuki Hayabusa engine with a turbo bolted on. In simple terms its got twice the straight line grunt of the old one which is some engineering achievement. I acquired it from a friend of a friend who was just looking to sell at the time I was wondering what comes next for this year. Conventional wisdom has it that this car should not be competitive, not so much because of turbo lag but because the power is not delivered linearly with the throttle position. The challenge for this year is to tame the beast with some smart thinking and a big dose of new engine management electronics.

Virtual Clouds

Posted in Uncategorized by abahtowt on February 16, 2009

I used the term virtual cloud the other day without really thinking about what it meant. In context, I was talking about how you would want to abstract away from any given cloud that you might happen to be using at that instance to allow for easy migration to some other cloud. This is clearly a different notion from the virtualisaton of servers within a cloud. Thomas Bittman talks about security of the virtual cloud here but otherwise it appears to be not that popular a term. Other terms that look connected are virtual private cloud and the somewhat more specific virtual private data center.The notion of being private here is from an enterprises perspective.

The interesting question for me lurking here is what is the nature of the interface to a (virtual) cloud. The obvious favorite model today that of virtual servers perhaps augmented with infrastructure services such as storage, identity management or message queues. These add-on services make most sense when by the nature of being provided by the cloud there is some intrinsic added value created, otherwise you could and probably should just build that service into your virtual server images for private use. From the cloud providers perspective of course the value of infrastructure services is as much about cloud lock-in as it is about shared gain.

Clouds & Cars

Posted in Enterprise, Travel by abahtowt on February 5, 2009

It’s hard to like the meta-trend for inventing new computing trends every two weeks. Maybe it’s reflecting the pace of thought in these highly-connected times we live in, but then again maybe it’s just cynical marketing. Really, I don’t need anymore “bathtub-as-a-service” terms in my life right now, thanks very much.

So anyway, clouds & cars, are nicely connected by Kent Langley, he says,

What is private cloud computing?  To make a non-technical analogy, Private Cloud Computing is a little like owning your own car instead of using a rental car that you share with others others and that someone else owns for your automobile and transportation needs.  Rental cars haven’t completely replaced personal automobile ownership for many obvious reasons.  Public Cloud Services will not likely replace dedicated private servers either and will likely drive adoption of private cloud computing.

I really like this view, it feels rational, it’s a simple horses for courses argument. So what type of horse would I like? I travel for probably 10 weeks in the year so I want one that is 80% privately focused and 20% publicly focused if you have such a thing handy. Ideally I would like the same user experience on both, but for 20% of the time I will put up with it being different if I really have to. Oh, and please remember I connect to the mother ship from a few thousand miles away so best make sure you can offer a local service to save me from the latency bogeyman.

Westy update

Posted in Westfield by abahtowt on January 10, 2009

So last year with the westy was an almost complete washout. We killed engines on three seperate occasions and only really managed one competitive run with a less then ideal setup.

The engine we are currently using is a Yamaha R1 ‘07 unit. It appears to have a tendancy to literally throw its oil out under some conditions that we have not been able to identify. After a lot of head scratching and some help from the Yahoo BEC list we think the cause is likely a pressurisation of the crankcase.

To counter that for this year we have added breathers to the rocker cover by re-using the AIS ports and also connected a small catch tank above the crank breath so that any ejected oil will flow straight back into the crank case.

The first test of the setup was last weekend. So far, so good. There was some oil ejected but it was being returned and it was never more than the 1/2 liter catch tank volume. With a bit of overfill I am hoping this will be a reliable solution.

Here is a pic of the car in action at Croft during last year on one of the few occasions it was running OK. Roll on better time this season which starts around April.

Westy at Croft

Westy at Croft

Intel XML Software Suite 1.2

Posted in Intel, SIMD, XML by abahtowt on January 10, 2009

I missed calling out the Novemeber 1.2 release of the XML suite that I work on, it’s available here. This release has much improvmed Java DOM performance & Core i7 specific optimisations.

The release is the first to make use of some new instructions introduced in Core i7 SSE 4.2 (a.k.a. the Nehalem processor) specifically designed to aid text and XML processing. It’s taken a lot of effort to tune the suite for Nehalem but it also sets us on a road towards significantly more vectorisation of the XML parser and schema validator. Vectorisation being not only significant for the performance gains it delivers today but in the way it aligns the suite for further gains as the Intel processor micro-architecture evolves.

I should also mention we have released a benchmark framework for people to use to compare XML performance on their own workloads, you can find that here. Like most benchmark frameworks it takes a bit of setting up to get the best from it but it’s a lot easier than rolling your own.

And finally, if you need any assistance with using this, there is a forum here.

Being declarative in code

Posted in Declarative by abahtowt on October 2, 2008

This is a nice response to a question on functional vs declarative from Sean McDirmid over on lambda-the-ultimate, a great site for programming language geeks.

Declarative means that code does not encode how computations occur, just what occurs. Admittedly, this is a very fuzzy definition, and it is easier to just say declarative = immutability, but that really misses the point. I also think the declarative label should be applied to code rather than languages, as non-declarative code can be expressed in any Turing-complete language.

Code that is declarative does not encode control-flow details, which are dealt with by the language run-time. Prolog can be used as a declarative language in simple contexts, but for complicated programs that require cuts or lots of recursion, code becomes very non-declarative as programmers are exposed to a lot of control details. Likewise in Haskell, especially since imperative programming is conveniently done with monads. IMHO, recursion is as non-declarative as assignment, as it is easy to simulate one with the other. It is definitely possible to express declarative code in Prolog and Haskell, but it is also possible to express declarative code in Java or even assembly. Declarative code in these latter languages would just look really ugly, and their declarative nature would be obscured by syntax.

Syntax issues are important when designing a declarative language. If we want to make two values are equivalent, i.e., x is y, its much better to write x = y or x==y or x is y, rather than x.set(y), where the declarative nature of the code is obscured by syntax (it looks like an assignment rather than a declarative relationship). Expressing declarative code in Java is ugly, as everything is done through assignment, and it is difficult to tell that the code being written down is actually declarative. Also consider expressing declarative rules in Java that execute via a rule engine. On the other hand, Scala list comprehensions provide a nice declarative syntax for abstracting over data that hides less declarative function call and closure creation details. Also, using operator overloading in Scala, it is possible to also write decent Prolog code.

 

Which is worse, Heathrow T1 or Washington Dulles C & D Concourse?

Posted in Travel by abahtowt on October 1, 2008

Probalbly not a question you have likely asked yourself unless like me you have travelled through both recently. Heathrow airport really has to be the worst of all the major hubs, I think everyone agrees on that.

Last week I passed through the recently refurbished Heathrow T1 terminal. On first appearance it’s nice, airy, spacious but then try finding a drink. Yes, there is a coffee shop, just the one, and with a queue of 25 people at it. So I started looking for a shop that sells drinks, and there is one of these as well, just the one, at the other end of the building and charging a 100% mark-up, not very impressive after 20hrs of traveling.

There are plenty of other ‘outlets’ in T1 but selling stuff that really has no value to me, electronics (at high-street prices), designer clothes, perfumes, etc. My experience was not really helped by having the fire-alarm go off while I was there and having to be photographed on entry for a purpose I have no idea about as I had a brand new biometric passport in hand.

Dulles is a big contrast, it’s aged, claustrophobic and cramped but hey it has a choice in food services so that is something. The big killer for me there is that there are too many gates. This means too many people for the size of the concourse at busy times. It’s close to the experience of a busy London tube station and not in a good way. This may be OK if you are just jumping around the US but for an international traveller not a great option.

So my current favourite airport? Think it has to be Shanghai, the building is great, there are enough services to get what you need easily and recently they have put a big effort into speeding your entry & exit which is more than can be said for US passport control recently.

 

Tera-scale computing & Programmer Productivity

Posted in Declarative, Dynamic Languages, Intel by abahtowt on October 1, 2008

For software geeks there are a couple of interesting projects running at Intel under the Tera-scale computing research initiative, here.

I have been looking at the progress on Ct, a C like runtime model for throughput computing, think “how to get high throughput on many core systems” where many-core could mean core counts into the 100s. It’s obvious there are some real significant challenges here but that is not what caught my attention, but how we trade focus on efficient hardware use against programmer productivity as an industry.

In enterprise environments we have plenty of thread-level parallelism to exploit for some time to come in our web and applications servers. This necessarily makes the questions Ct is trying to answer less pressing than for client application developers which really need to be addressing at least the multi-core challenge today. That of course begs the question of what ranks higher, in fact what does that productivity improvement list look like, here is my list of -isms,

Declarativism – Well maybe not really a word, but I am sure you get what I mean. There is no real argument over how much easier declarative approaches to design and implementation are for me. What is missing is making the approaches more open. I tend to find junior programmers really resistive to declarative thinking. I don’t think this is simply an education problem, it’s more deep rooted than that and maybe will require a conceptual breakthrough similar to the object-orientated revolution.

Dynamism – Covers everything from dynamic typing to reflection features. This is a “get out of my way” request to the tool chains but it has a significant proviso, don’t let me look like a fool by creating code that is unreliable. We are on a path to progressing this but I think its going to be a long path to make it to main street in a form safe for mass use.

Parallelism – The multi/many-core challenge does make my list but it really is third of these three. Important for some environments today and no such much others. It’s an efficiency concern that we must solve for sure.

 

JSR 292 EDR

Posted in Dynamic Languages, Java, invokedynamic by abahtowt on June 9, 2008

John Rose has got the early draft release for JSR 292 invoke dynamic out the door recently. Will be interesting to see how this is all received in the wider language community. There were a few things in there I was not that happy with but I will save commenting on them for another day.

I did really want to do some low-level coding towards this but the Sun contributor agreement is not that open to me so I will probably have to watch the rest of the JCP process unfold a bit from the sidelines.