Managed to get some coding done on the flight down to Sydney a few days ago. The PoC I’ve been kicking around for some time got enhanced in the form of a specialised Subject<T, R>. ReplaySubject wasn’t quite working for me out-the-box. I basically need a ReplaySubject with a twist Still amazed how many Java developers are still unaware of RX.
Goldman Sachs moves forwards with gs-collections 4.0. Code Kata offers training and excercises on gs-collections. A rather old slide deck offers an intro here. Inspired by Smalltalk Collection protocol Wonder if the Deutsche Bank Lodestone had anything to do with GS’s Open Sourcing? I notice as well that the Lodestone WordPress blog is now marked as private
ScalaDays 2013 Rod Johnson’s keynote is definitely worth a watch. Offers a good view of today’s Java and Scala, and where Scala might go in the future – definitely not a direct Java replacement.
My recent Rx reboot, this time in Java, allows Google to remind me of Lee’s Introduction to Rx book as a useful source of Rx information, in combination with the RxJava wiki. The acknowledgements page offers a blast from the past Now if I could only find a Marble diagram generator that works in Intellij
Managed to get a few hours in during the long return flight from Sydney to London. Most of the coding was around enhanced scenario testing and refactoring the underlying codebase to further leverage RxJava. Ran into a curious “box type” cucumber error, which due to not having download the full documentation pre-flight, was luckily resolved via a spelling correct in the .feature file.
Observable.Zip allowed me to combine two observables, but I’ve now realised that that isn’t exactly what I want to do. I really want a “select” across two Observables – still pondering on that one.
The Open Web Platform is now widely recognized as the premiere solution for cross-device and cross-platform development. To fulfill this promise, however, W3C must promote strong interoperability (through testing), high performance, stability (especially for consumer electronics), and a comparable or superior experience to native apps
Over the years I’ve done a degree of work with Microsoft .NET Rx. With the recent (last 6mths) visibility of Netflix usage of RxJava, I wonder how many people in finance are actually using RxJava. Apache Camel users can use camel-rx which itself leverages RxJava. Ben’s slides from QCon provide a good view of RxJava.
If I recall correctly, in the Microsoft Foundation Classes (MFC)/.NET WinForm time frame, the ability to batch visual control updates using BeginUpdate() and EndUpdate() allowed software engineers to avoid certain rendering costs when making numerous changes to visual controls. Clearly the visual control batch method wasn’t the silver bullet to make all visual performance issues disappear. The software engineer was still required to code appropriately to batch appropriately the changes prior to making appropriate function calls onto a visual widget.
Previously, it could be very difficult for a developer stopped at a breakpoint to know the asynchronous sequence of calls that brought them to the current location. Now in Visual Studio 2013, the Call Stack window surfaces this information, factoring in new diagnostics information provided by the runtime. Further, when an application stops making visible forward progress, it’s often difficult to diagnose and to understand what asynchronous operations are currently in flight such that their lack of completion might be causing the app to hang. In Visual Studio 2013, the Tasks window (formerly called Parallel Tasks in Visual Studio 2010 and Visual Studio 2012) now includes details on these async operations so that you can break into your app in the debugger and easily see and navigate to everything that’s in flight.
Over the last few months there has been a few articles on Spark. The interesting thing about Spark is that its bias to in-memory. IBM developerWorks has an article on Spark data analytics, “Spark, an alternative for fast data analytics“, which provides some insight into Spark. Of interest is that Spark is implemented in Scala. Amazon provides support for Spark, Shark and Mesos – see details here.
One can see the advantages of Spark, and thus I’m curious if anyone in financial services has tired leveraging Spark for possible risk management…
Playing around with Pandas recently – travel helps with time allocation I’ve blogged about Python usage in financial services a number of times before, but not the specific usage of Pandas. Pandas is great for data analysis applications – looking at the LFPUG blog posting from Oct 2012, AHL (“Moving an algo business from R and Java to Pytho”) also thinks so. Unfortunately I can’t seem to find Mr Pilsworth LFPUG presentation, but a quick Google for Pandas, coupled with reading between the lines of various financial job vacancies provides a view as to what is happening on the ground.
I’ve heard the Java 8 vs Scala debate in many quarters over the last time period. Its a curious discussion, like so many technology camp discussions. There’s the classic view of feature comparison, coupled with the enterprise language views of the world, and we might as well throw in the long standing imperative to functional switch club. Scala uptake in the last 1-2 years has increase from where I sit in the financial world. I don’t see Java 8 slowing this uptake, but it will aid the Joe Average Java developer in moving towards a functional programming road.
First off, if you’re not familiar with Google Go, try these links:
Lightstreamer take an interesting tack with Node.js, and provide a view of Socket.IO vs Lightstreamer, offering the view that features and performance are a reason to consider such and option. Curious to see if any of the other web streaming contenders take a similar approach with Node.js
Another day with some travel, and time to read the latest ThoughWorks Technology Radar. I see both Clojure and Scala are in the adopt Languages & Frameworks. The problem I see for both languages in the financial space is that there is still some considerable bias to the Java stack from a historical “architecture governance board” perspective, which is sometimes a blocker in the worst case, and in other just a speed bump If you can get access to these languages, then clearly the best scenario is to understand the language ROI, and leverage the languages as appropriate on an initial project. Then use this project to “market” the benefits within the organisation and gain traction. A quick Google will show that in London alone there are a number (although small) of opportunities for Scala/Clojure work within finance, often around “highly distributed, risk and pricing platform” projects. Hopefully the financial communicate will continue to realise that the one size fits all language rule that has historically been set within corporations for the last n years needs a more frequent review, and that in some cases a revised rule partially tied to problem/solution is required.
It’s interesting to read the various snippets of Clojure bank usage that are on the web. Based on a quick Google, there Deutsche, UBS (blogged about previously) and Citi as a minimum. The general pattern appears to be that within a bank, a particular area manages to persuade management to accept the “new” language into the fold. Pithering About provides some reasons for Clojure usage on a middle office project.
If you find yourself with a Maven Android project which builds fine from mvn command line but gives errors in eclipse the problem may be this:
After a Maven / Update Project, your Eclipse build compliance is updated to what is found in the pom. Without need for “maven-compiler-plugin”, it uses the oldest level.
In my case, Eclipse wasn’t happy with @Override annotations. This was because it was updating to Java compliance to 1.5 which doesn’t support annotations. The problem was more confusing because it didn’t give the correct error. (It said that my methods were not overriding anything – removing them then gave the error that I needed to override two methods.)