Minimum Viable Product (MVP)

April 21st, 2015 / Tales from a Trading Desk

Jon Pittman’s “The Tyranny of the Minimum Viable Product” posting offers an interesting read on a subject that is often difficult when a stakeholder is asked to define the features of an MVP for a new product.

The intent behind the MVP idea is to minimize wasted effort and risk — to focus the product on only the key elements that will capture the imagination of early customers, let them understand the vision and direction, and see the product as an early demonstration of that vision.

LLVM-Based Compiler For .NET

April 14th, 2015 / Tales from a Trading Desk

The NEW Microsoft is somewhat embracing Open Source.  2015 started with the CoreCLR being open sourced – the CoreCLR is the execution engine for .NET apps and performs compilation to machine code, garbage collection, and other core functionality to .NET.

Today,we hear that Russell Hadley on the LLVM mailing list that Microsoft has a new effort to

Produce MSIL code generators based on LLVM and targeting the open source dotnet CoreCLR

This new JIT will allow any C# program written for the .NET Core class libraries to run on any platform that CoreCLR can be ported to and that LLVM will target.

WatchKit Packaging and WKInterfaceController

April 10th, 2015 / Tales from a Trading Desk

Having spent the last few (late) night with Xcode playing with WatchKit apps, there are a few interesting takeaways for any new WatchKit developers:

  • Packaging of WatchKit apps is nicely explained by this diagram – target structure.   The storyboards are separate from the actual WatchKit code (WKInterfaceController etc).  More interestingly, and least well publicised is the fact that Apple Watch also uses wifi if possible, together with the default Bluetooth LE to communicate with its paired iPhone.

Apple Watch – Banking and Trading

April 9th, 2015 / Tales from a Trading Desk

Before taking a look at what is currently available for Apple Watch in the banking and trading space, its probably worth having a read of the WatchKit, and the three types of apps available on the Apple Watch:

  • WatchKit App – architecture overview can be seen here.
  • Glances
  • Actionable Notifications.

Julian has a fairly simple tutorial, “WatchKit Introduction: Building a Simple Guess Game”, if you want to kick the tires on an Apple Watch.


Distributed Teams – Agile Practices

April 8th, 2015 / Tales from a Trading Desk

Jutta Eckstein has an interesting talk on InfoQ that discusses “Applying Agile Development Practices in Distributed Teams”.  Distributed teams working on the same project/code base are always challenging.  Code ownership is clearly called out in the talk for obvious reasons.

The Golden Rule slide offers some sensible rules for handover between location/time zones – build are green.  I would also add that ideally a CD process is being used, and the build has deployed successfully before handover to another region.

Virtual Teams

March 15th, 2015 / Tales from a Trading Desk

Slashdot provided a few interesting links on Virtual Teams recently:

  • Why Remote Teams Are the Future (and How to Make Them Work)
  • Virtual Success: The Dark Side of Virtual Teams
  • 21 Months In: How to Manage a Remote Team

A few keys points are worth noting:

hiring people you can trust, and conversely, trusting the people you hire

Leaders that understand how to recognize and prepare for challenges and then raise solutions before they become costly stumbling blocks are setting themselves up for success. However, most leaders are taken aback by the diverse challenges that virtual teams can bring and spend the majority of their time attempting to assess what is going on and put out the fires.

Reading from Sockets

March 15th, 2015 / Hidden Variables

This post is part of a series on the byte sources underlying the readable streams in the Streams Standard. See the introductory post for more background and links to the rest of the series.

At the simplest level, sockets can be treated much the same as files. You can get a file descriptor for the socket, and while there are a number APIs involved in setting it up to actually connect to a remote server, once you’ve done that you can read from it using the same read(2) interface as we discussed for files.

Currency Language Support

March 10th, 2015 / Tales from a Trading Desk

As Anatole states in his “Go for the Money! JSR 354 Adds First Class Money and Currency Support to Java” post, support for monetary values is painful.  In the financial community, there should be a cheer to see that once JSR 354 is finalised in Q1 2015, development of complex currency applications e.g FX Single Dealer Platforms, should get a little easier.

Regards to anyone on Java 7, there is hope, but ideally you want to be looking to move to Java 8 in my view:

Random React.js Reading

March 8th, 2015 / Tales from a Trading Desk

General collection of React.js reading material.

Google Calendar Labs – World Clock

March 8th, 2015 / Tales from a Trading Desk

Yet again ran into issues using the World Clock experimental feature in Google Calendar.  Basically the world clock feature appears to be unaware of daylight saving changes in regions. The latest being the start of Daylight Saving time in the USA.  Net out, scheduling a conference call for 1:30pm NYC caused me to miss the call :(

Bank = Software Company

March 5th, 2015 / Tales from a Trading Desk

BBVA has made a bold statement about becoming a software company, predominately due to the change in mobile usage.  If I recall, Deutsche Bank had grand ideas of creating an internal software company at some point in the past – not clear how well that went.

I wondered what technology BBVA are using for their platform:

build a new customer-centric technological platform, which operates in real time and is also modular and scalable. This platform allows BBVA to develop a new generation of services to compete with new startups and major digital companies.

Reading from Files

March 4th, 2015 / Hidden Variables

This post is part of a series on the byte sources underlying the readable streams in the Streams Standard. See the introductory post for more background and links to the rest of the series.

Once you have opened a file descriptor, you’ll use the read(2) function to read bytes from it. In C the signature is

ssize_t read(int fd, void *buf, size_t count);

Translated into JavaScript this might look something like

const bytesRead = file.readInto(buffer, offset, count);

which will attempt to read count bytes into the ArrayBuffer buffer, starting at position offset into the ArrayBuffer. The returned number of bytes, bytesRead, might be less than the desired count, usually because you’ve reached the end of the file.

Byte Sources: Introduction

March 3rd, 2015 / Hidden Variables

This post is the beginning of a series of posts regarding some of the more interesting issues I’ve encountered while working on the Streams Standard.

In the Streams Standard we have the concept of readable streams, which are an abstraction on top of the lower-level underlying sources. In an abstract sense an underlying source is “where the chunks of data come from.” The most basic underlying sources are things like files or HTTP connections. (More complicated ones could be e.g. an underlying source that randomly generates data in-memory for test purposes, or one that synthesizes data from multiple concrete locations.) These basic underlying sources are concerned with direct production of bytes.

Complexity – Large-Scale Software Systems

March 3rd, 2015 / Tales from a Trading Desk

“Out of the Tar Pit” is an old paper, but worth a read never the less.  The paper was picked up in more recent years by Hacker School, and also “10 Technical Papers Every Programmer Should Read (At Least Twice), and more recently, Brian Gesiak.

Since Brian has offered a few interesting call-outs already, I’ll only offer a few additional thoughts/quotes:

Page 1: The biggest problem in the development and maintenance of large-scale software systems is com- plexity — large systems are hard to understand

Page 2: Complexity is the root cause of the vast majority of problems with soft- ware today

Event-Driven Architecture Pattern Topologies

March 2nd, 2015 / Tales from a Trading Desk

O’Reilly Radar has an interesting article on event-driven architecture, “Variations in event-driven architecture”.  Mark Richard’s eBook is available here if you want the full read.

Its probably worth pointing out that I’ve come across a number of people worried about the number of event queues when using the Mediator topology – a strange thought process in my view unless the architect is proposing to use a single queue for all event types :(

It is common to have anywhere from a  dozen to several hundred event queues in an event-driven architecture

Code Ownership

February 26th, 2015 / Tales from a Trading Desk

Jay Field’s has an interesting posting on code ownership, “Experience Report: Weak Code Ownership”.  “Too many cooks in the kitchen” is unfortunately a problem I suspect we have all seen to many times on medium to large projects.  Stating the obvious, encourage consistency on a large code base over n years is difficult – its unfortunate that stakeholders who haven’t come from a software engineering background don’t really grasp the issues of such problems.

User Story Map

February 19th, 2015 / Tales from a Trading Desk

Few useful links if your going down the User Story Map road:

Time to React.js?

February 18th, 2015 / Tales from a Trading Desk

Eric Florenzano offers an interesting read on “Facebook just taught us all how to build websites”.  Essentially he is talking React.js.  Given the noise level on the web around React.js, coupled with the recent React.js conference, I’d be surprised if readers don’t already have a view of React.js, and haven’t seen their peers/colleagues watching the various presentations.

A recent blog from the BBC offers insight into the road they are taking with the BBC Homepage refresh.  Unsurprisingly, the BBC has chosen React.js:

Bad Design Assures Bad Results

February 16th, 2015 / Tales from a Trading Desk

I’ve not read JavaScript Application Design yet, but was struck by the correctness of a statement made in “About the Book”:

The fate of most applications is often sealed before a single line of code has been written.

As I’ve blogged about before, all to often team lurch into code well in advance of actually understanding the problem they are attempting to solve, and lacking any sensible architecture and process.

Good design and effective processes are the foundation on which maintainable applications are built, scaled, and improved.

Technical Debt

February 12th, 2015 / Tales from a Trading Desk

Design Smells offer a single page on technical debt.  One of the key causes of technical debt often overlooked compared to the other items listed is “schedule pressure”.  Lack of understand of basic software engineering by stakeholders often means that teams are driven down a road where the only outcome can be technical debt, which in itself leads to other issues :(