Microsoft Azure Service Bus and AMQP

January 27th, 2012 / Tales from a Trading Desk

Interesting reading over on Michael Peacock blog regards the recent AMQP 1.0 conference in NYC:

There was a very interesting talk from David Ingham, Microsoft, regarding the Azure Service Bus and their work supporting AMQP 1.0,

my-Channels Nirvana 7 – Driving Performance and Features

January 27th, 2012 / Tales from a Trading Desk

Interesting chat with the my-Channels crew around Nirvana 7 in the last few days. Multicast for data group delivery makes we wonder how much business my-Channels might pickup now they are in the 29West “multicast” space ;) MQTT support only adds to my-Channels credentials in offering a unified messaging platform. However the performance tuning provide in Nirvana 7 is possible at the top of the list of impressive features – especially the “45 Micro Seconds” for 50 events per second to 5000 clients.

However, the best is often left to last, and in the case of the my-Channels posting on Nirvana 7, the final paragraph is a must read:

High-Frequency Trading Paper

January 27th, 2012 / Tales from a Trading Desk

High-frequency trading (HFT) has recently drawn massive public attention fuelled by the U.S. May 6, 2010 flash crash and the tremendous increases in trading volumes of HFT strategies. Indisputably, HFT is an important factor in markets that are driven by sophisticated technology on all layers of the trading value chain. However, discussions on this topic often lack sufficient and precise information. A remarkable gap between the results of academic research on HFT and its perceived impact on markets in the public, media and regulatory discussions can be observed.

Anyone using Storm in Capital Markets?

January 25th, 2012 / Tales from a Trading Desk

Storm was open sourced sometime ago thanks to Twitter. Storm, a scalable real-time computation system, so think CEP without the storage engine. The coolness is in the distributed and fault-tolerant features.

The important properties of Storm are:

  1. Simple programming model. Similar to how MapReduce lowers the complexity of doing parallel batch processing, Storm lowers the complexity for doing real-time processing.
  2. Runs any programming language. You can use any programming language on top of Storm. Clojure, Java, Ruby, Python are supported by default. Support for other languages can be added by implementing a simple Storm communication protocol.

Distributed Kanban Tools

January 25th, 2012 / Tales from a Trading Desk

Kanban when the whole team is in the same location requires a different tooling (wall/board etc) than a distributed multi-timezone team. After some searching, the best I’ve come up with is HipChat or similar group chat with Asana for managing the tasks. Anyone get a better tooling for distributed teams?

AWS Storage Gateway

January 25th, 2012 / Tales from a Trading Desk

The AWS Storage Gateway is a service connecting an on-premises software appliance with cloud-based storage to provide seamless and secure integration between an organization’s on-premises IT environment and AWS’s storage infrastructure

Market Model Typology (MMT)

January 25th, 2012 / Tales from a Trading Desk

A consortium of exchanges and technology suppliers have developed a set of common standards designed to restore post-trade transparency in the European equity markets.

JavaScript Modules

January 17th, 2012 / Tales from a Trading Desk

Interesting video over on Channel9SPLASH 2011: Sam Tobin-Hochstadt – JavaScript Modules. Also worth a watch, and from SPLASH-2011, Brendan Eich – JavaScript Today and Tomorrow

High Performance HTML5

January 16th, 2012 / Tales from a Trading Desk

Definitely worth a watch. I’d forgotten about Browserscope, another site worth a look – IE 10 need to up its game!

On Hiring

January 6th, 2012 / Avik’s Ruminations

The process of hiring a great programmer is an oft discussed issue in technology circles.  A lot of such discussion can however benefit from references to the published literature in this field.

Particularly important is Schmidt & Hunter’s 1998 review paper,  The validity and utility of selection methods in personnel psychology: Practical and theoretical implications of 85 years of research findings. A useful summary is here. In summary, they find GMA (General Mental Ability) to be the best predictor of job performance:

“GMA can be considered the primary personnel measure for hiring decisions and one can consider the remaining personnel measures as supplements to GMA measures”

Enterprise IT predictions for 2012 – A Capital Markets Spin

January 6th, 2012 / Tales from a Trading Desk

Ross Mason offers some Enterprise IT predictions for 2012. On the big data front, it will be curious to see how the capital markets space takes to hadoop et al – Bank of America if I recall correctly has spoken at conferences in 2011 about its initial Hadoop usage. On the social enterprise prediction, one would expect single dealer platforms (SDP) to follow Hedgehogs from a social perspective. Prediction 6, “web goes real-time” is something I’ve been blogging about for some time. Socket.io coupled with the various other OSS/products will lead the charge.

Akka Swap Execution Facility (SEF) Workflow and CoffeeScript Thoughts

January 6th, 2012 / Tales from a Trading Desk

InfoQ has Jeremy Ashkenas Strange Loop presentation, “CoffeeScript, the Rise of “Build Your Own JavaScript”” – worth a watch.

Software Anatony posts on the subject of “Scatter-Gather with Akka Dataflow”. The scatter-gather sample is nicely geared to quote, which makes me think of the RFQ workflow against multiple price providers – SEF? Akka 2.x appears to be shaping up nicely with 2.0 expected to be release in February 2012.

Capital Markets Google Chrome Usage

January 4th, 2012 / Tales from a Trading Desk

Wired had an article last month (Dec 2011) on Morgan Stanley testing of Google Chrome Frame to resolve the IE legacy issue (when rolling out new HTML5 applications). If Morgan Stanley is testing Google Chrome Frame, then one can assume all the other tier-1 investment banks are doing the same, or already using Google Chrome Frame. Maybe Rich Internet Application Statistics should consider Chrome Frame as the new RIA plug-in

Random Christmas and New Year Reading

January 1st, 2012 / Tales from a Trading Desk
  • Code2Cloud: Automating The Whole Software Dev/Deploy Cycle
  • Writing Modular JavaScript With AMD, CommonJS & ES Harmony
  • Transactional event-based NOSQL storage
  • How to manage the performance of 1000+ JVMs
  • JavaScript, CSS, HTML Frameworks and Tools – my list
  • jQuery Templates and JsViews: The Roadmap
  • How to deploy Node.js in cloud for high availability using multi-core, reverse-proxy, and SSL
  • Google Wraps Internet Explorer in Chrome Clothing
  • Marakana TechTV
  • DIVE INTO HTML5
  • Should You Learn CoffeeScript?
  • The Little Book on CoffeeScript

Sublime Text and CoffeeScript

December 20th, 2011 / Feanorian

I admit it. I have Text Editor compulsion. I have played around with many text editors on my Mac including vim, emacs, BBEdit and TextMate. So its no surprise I encountered Sublime Text 2 .  Its a neat little editor in its infancy.

But as all neat little editors in its infancy go, it is a little premature.  For example there is no out of the box CoffeeScript support.  Since I have been hacking some CoffeeScript, I needed to correct this.  So with some googling and the fact that Sublime Text supports TextMate bundles, I discovered how to start CoffeeScript development with Sublime Text.  The following are my findings.

Resilent Messaging with Node.js – RabbitMQ or ZeroMQ

December 20th, 2011 / Tales from a Trading Desk

There are a lot of postings around Node.js offering code snippets pushing stock data and more. Unfortunately, few of these postings offer thoughts around resilence, and deployment within an enterprise DMZ supporting resilence.

Lets start by consider the simple scenario of a pricing engine that provides a continues stream of prices, which we want to deliver to a HTML client via a Node.js server. For this posting, lets ignore the issue of the pricing engine failing, and concentrate on failure of the Node.js server, and disconnection of the HTML client. If in the simple scenario we had the Node.js server connect to the pricing engine, on a HTML client connecting to the Node.js server, if the Node.js server died, we would loose any data the pricing engine sent between the time the Node.js crashed, and the time the client reconnected to a new Node.js server, or the original re-started Node.js server. We’ll ignore expired prices for this posting as well :)

Corporate World Technology Choices – Last Mile Mesasging

December 18th, 2011 / Tales from a Trading Desk

The choices we make around the technology stack used in solving business solutions – what languages, what OS, what IDE, what framework, what architecture etc – are based on our (often limited) view of the world, coupled with what projects we have worked on before, “noise” on the street, and finally our bias view (a human characteristic) of technology. Technology bake-offs can sometimes assist in understanding the pro/cons prior to embarking on a full build of an application to solve a business problem. However, bake-offs can like many things, be bias unless kept in appropriate check. Web data push technology is one area where there appears to be a good degree of bake-offs run. This is possible due to the growth in this area of applications leveraging push data over the web – especially true in the Single Dealer Platform (SDP) space.

HTML: Where’s a Motion “Bubble” Charts?

December 15th, 2011 / Tales from a Trading Desk

Highcharts offers some nice charting for the HTML world. jsMorph is a morphing – motion – tweening framework, which also offers some nice charting, but no motion “bubble” chart (neither does jqPlot). Curious to see that Google’s Motion Chart still uses Adobe Flash. Time to build one?

Simple helper method for async testing with Jasmine and RequireJS

December 14th, 2011 / Pixel-in-Gene

Unit testing in Javascript, especially with RequireJS can be a bit of challenge. Jasmine, which is our unit testing framework does not have any out of the box support for RequireJS. I have seen a few ways of integrating RequireJS but that requires hacking the SpecRunner.html file, the main test harness that executes all jasmine tests. That wasn’t really an option for us as we were using a ruby gem called jasmine to auto generate this html file from our spec files. There is however an experimental gem created by Brendan Jerwin that provides RequireJS integration. We did consider that option before ruling it out for lack of official support. After a bit of flailing around, we finally hit upon a little nugget in the core jasmine framework that seemed to provide a solution.

Bitemporal Patterns and Objects (Java and Python) – Part 7

December 13th, 2011 / Tales from a Trading Desk

It comes as no surprise that Martin Fowler offers a view on Temporal Patterns. Bitemporal pattern offers some interesting code in Java, its also interesting that there is a Python version as well. Python is interesting from a pickling function perspective as touched on here.

So given the above, coupled with QuantLib or JQuantLib together with a github repository, we have enough to build a Proof of Concept (PoC)

Sidebar: Bitemporal reading here.