Ehsan Hajyasini's Learning Journal

Introduction

I am Ehsan Hajyasini a PhD researcher @ UCSD - NVSL.

Software Quality

How do you improve software quality? Here is the answer we came to at Radin Bourse.

  • software quality TDD trunk-based pair-programming

Fast java Serialization and Networking

Serialization can be a big deal in Java (or any other language for that matter). Some libraries can take 10s of microseconds while others can be as fast as 20 nanoseconds.
Simple Binary Encoding (SBE) is used together with Aeron and is crazy fast.
Fast Binary Encoding (FBE)

Other than Aeron, KryoNet is a Java library that provides a clean and simple API for efficient TCP and UDP client/server network communication using NIO. KryoNet uses the Kryo serialization library.

  • latency networking serialization

How to Quantify Scalability

The Universal Scalability Law (USL)

  • scalability

Aeron Message Passing Library

Aeron “promises to move millions of messages a second, at small microsecond latencies between machines, with consistent response times, to large numbers of clients”. A detailed overview could be found here which includes a very nice writeup of the lessons learned.

Aeron is commonly used in the trading industry.\

Talks: Aeron on InfoQ Aeron Clusters on InfoQ

Guides: Amaethon: Auctioning with Aeron and SBE!
Aeron For The Working Programmer
Aeron Stats Prometheus Exporter
Aeron Practice

  • exchange software

Evil Field Injection

Why field injection is evil
Can be prevented using Ninjector in Spring.

  • testing java spring

Spring & Mockito

Injecting Mockito Mocks into Spring Beans

  • testing java spring

JAVA JVM Warmup Time

HotTub paper on JVM warmup time and its effects on performance of Spark and HDFS

  • software java

Behavior-Driven Development (BDD)

Tool: Cucumber
Talk: Setting a Good Example - How to improve your BDD

  • software testing