JAX Finance Roundup: “The epitome of open allocation is open source”
Another day packed with performance points and tag-team sessions, JAX Finance brings it up a notch with a fab timetable for Day 2.
The second and final day of JAX Finance has culminated in a plethora of sessions focusing on performance, structure and growth. Mashooq Badar and Christian Gross got us off to a bumper start with sessions that engaged and challenged those in attendance.
XP practices and NoSQL
Badar went into the finer details of how he was able to adopt and maintain XP practices at a scale that saw the creation of a department capable of acting as the hub for dozens of systems, who report their trading activities to regulators around the world. These practices included TDD, continuous integration and pair programming.
Gross got us putting our thinking hats on in a session that explained when and where to use SQL and NoSQL when building various applications. When looking at the way we can actually access the various NoSQL databases, Gross had a warning for the group: Don’t go for client access technologies that tend to “abstract” and “simplify” as they might slow down and make your client less efficient.
It’s safe to say Gross likes NoSQL in a lot of instances, stating that “the biggest thing that NoSQL has brought to the world is sharding”. Used to partition the database across multiple physical computers, Gross calls sharding an administrative issue, highlighting that a poor sharding strategy will result in dreadful scaling.
Tag team sessions
Next we jumped into the first of our collaborative sessions, with tuning master Kirk Pepperdine collaborating with Dr Heinz Kabutz to rip apart Java 8 parallel streams. They divulged their wisdom in figuring out how we can view what is happening inside our common ForkJoinPool, as well as ways to measure throughput and response time.
In the next room, Chris Chedgey was sharing his views on structural beauty, as in how all the snippets of code are organised into containers (methods, classes, packages) and how the containers relate to each other. In the words of Chedgey:
You need to be able to chunk up the code that can be released and tested in their own time, but that can’t happen if everything and everyone is using everything else.
What Chedgey started looking at was good structure at a subjective level: Containment (or abstraction) measured by cyclomatic complexity, dependence and containment, levels, cumulative dependency (CCD) and the locality of dependencies. Chedgey states that “you want to organise your code so that your dependencies are more local”.
Next we checked out another collab session with Pepperdine and John Davies, who were back to discuss low latency in XML processing. Together they demonstrated the memory cost of using XML parsers such as SAX and comparing that with low latency alternatives.
While a big component of latency is dead time, another issue is serialisation, which can limit scalability. After going through some of the sources of latency (JVM safe-pointing, hardware sharing to name a few), Davies and Pepperdine rounded out the session with a quick demo featuring Davies’ current favourite numbering scheme, binary.
An inspiring keynote
Today’s keynote was delivered by Pieter Hintjens, programmer, author, and full-time thinker. Hintjens explained how we can grow large scale software systems, while also admitting that making accurate software is very, very hard.
— JAX Finance (@jaxfinance) April 29, 2015
For Hintjens, there are two problems worth solving: accuracy and scale. “It’s pointless solving problems of efficiency if they’re the wrong kinds of problems to solve”.
By going through cost gravity, which is the idea that things will get cheaper and more plentiful over time, adding Conway’s Law, explaining the important of organisation models as well as contracts and regulations, Hintjens presented a systems where almost all participants are seen to provide value.
The freedom to move around, freedom to start things and freedom to fail were substantial points that form the backbone of successful large scale software systems, with a nod to open allocation as the management layer du jour:
The epitome of open allocation is open source. Priorities get set by individuals who are able to think about what is important for their company in the long term, and very quickly.
Wrapping it up
After the last break of the day, we jumped headfirst into the remaining four sessions. John Stevenson had a great time explaining how Clojure is an effective choice for functional programming. Being extensible via macros, Clojure allows the growth of a wide range of libraries in order to increase the speed of application development.
Eoin Woods used his session to show that modelling doesn’t deserve its cringeworthy status, where together with Simon Brown he developed a set of principles to avoid the extreme of “nobody really understanding the architecture”. His session brought together developers outside of the finance world: marketing, networking and advertising.
Dr Heinz Kabutz came back as a one-man-band to preach productiveness in coding. “Good coders have to be lazy”, which is a sentiment we’ve definitely heard before. His clarification on the “right amount of lazy” showed attendees how they can be productive and quite clever, via the use of Java 8 lambdas.
Bring us back to our focus on finance, Lewis Foti capably closed out the conference with his talk describing the wide range of challenges that come with being the first adopter of a disruptive technology in a large organisation. The decision to migrate the in-house HPC environment to AWS in a major organisation isn’t taken lightly, but within nine months the migration was complete.
And that wraps up JAX Finance! We had a great turnout and received a lot of positive feedback, and we can’t wait to do it all again next year. See you in October at the JAX London.
Hop onto Twitter at @jaxfinance to scroll through all the action.