Pages Navigation Menu


Categories Navigation Menu

Team FishEye Newsletter – Vol. 1, No. 2 – June, 2018

Team FishEye Newsletter – Vol. 1, No. 2 – June, 2018



In This Issue

Strategic Growth & Increased Employee Satisfaction
The Best Team
FishEye Real-Time Platform (RTTK)
Team Travels
Your Input
3 Quick Questions




Strategic Growth & Increased Employee Satisfaction

By Bob Chisholm


FishEye is on the move in many different areas. The Maynard office is entering the home stretch of a major buildout and expansion which includes a laboratory capable of supporting classified projects. The RTTK application is being increasingly utilized on a variety of platforms across domains. The award of Small Business Innovative Research (SBIR) contracts is enabling expanded RTTK capability. Our internship program, along with a few strategic hires, has brought FishEye an infusion of great young talent. With the award of two programs, FishEye’s presence in Huntsville, Alabama is poised to grow significantly. We’ve established a foothold in Colorado Springs, Colorado. Looking forward, FishEye has a number of proposals that are pending award. Should these awards be decided in our favor, these programs will provide stability and growth into the foreseeable future.

This array of activities is not a random set of activities but, instead, is driven by FishEye’s Strategic Business Plan (SBP). The SBP was developed two years ago and is reviewed and updated periodically. The higher-level items (Mission, Vision, Goals) can be viewed on the FishEye public website. Every decision that FishEye makes is now viewed through the prism of the SBP. What’s not visible on the public website are lower-level metrics that feed into the higher-level goals. These metrics are related to growing FishEye’s real-time dominance while increasing employee satisfaction. Although our Maynard-based team may question how working in a construction zone over several months aligns with employee satisfaction, we are taking the long view.

We look forward to a continued focus on strategic growth and increased employee satisfaction.





The Best Team




Get to know your new teammates and celebrate work anniversaries.


Dave G. – FishEye 18 year anniversary, January 10, 2018

Marc Brown – FishEye 20 year anniversary, January 11, 2018

Joyce P. – FishEye 3 year anniversary, January 12, 2018

Al P. – FishEye 19 year anniversary, February 15, 2018

Maureen M. – FishEye 7 year anniversary, May 31, 2011

Joe D. – FishEye 14 year anniversary, June 2, 2004





Emily Y.

Started at FishEye: February 5, 2018

Where I work: Maynard

Title: RTTK Product Developer

I was an intern for FishEye this past summer. After the internship, I went back to UMass Amherst for one semester to complete my Bachelor’s degree in Computer Science. I started working full time for FishEye at the Maynard office in early February.

Working on: I am currently working on adding features/enhancements onto RTTK.



sam marlin278*278


Sam M.

Started at FishEye: April 16, 2018

Where I work: Woburn, MA

Title: Software Engineer

Working on: I just started working on an X Band Radar. I worked at BAE Systems for 7 years before joining Fisheye. My background is real-time embedded software. My objectives are to get experience with new projects and software development practices, tools and languages.

I have a passion for aviation and military technology, and I am at my best when I understand the project as a whole, not just the software. I like to incorporate best practices from outside the program and adopt the use of new tools.



brian vincent 278*311


Brian V.

Started at FishEye: May 8, 2017

Where I Work: Marlborough

What I Am Working On: I am currently working on QEWR doing Signal Processing Software. I am implementing new detection algorithm upgrades and working on updating unit testing and formal qualification testing (FQT).

Innovative Approaches To Work: Before working in Marlborough, I worked at the home office in Maynard where I got to discover a tool called Ball Aerospace COSMOS. It is a new way of implementing regression testing and provides a flexible, easy to design interface to embedded software applications. I am a big supporter of this product and I am always advocating to use it in future projects.

Personal Stuff: I’m a big golfer, I love discovering new breweries, and I’m always looking to get outside and ride my bike.



Lily Zhu278*311


Lily Z.

Started at FishEye: May 30, 2017

Where I work: Maynard

Title: User Interface Developer

Working on: RTTK Graphical User Interface, focusing on data visualization using the D3.js library.

Innovation: I’ve done a lot with D3 to push beyond what I thought was possible, but I don’t have any particular innovative strategies besides trying different things, failing, and learning from those failures. Persistence is key, but also taking a break to return with a fresh perspective helps.

Personal: I have a litter-trained, free-roam house rabbit. “Izzy likes to beg for banana slices & zip up and down the hallway!”


izzy 278*311



FishEye Real-Time Platform (RTTK)


bill to blog


Q& A with Bill S.


Question #1:

What are the advantages of FishEye’s RTTK next generation MetaLog & MetaGen resulting from FishEye’s  investment in the core of RTTK over the last year?


The latest Metalog offers a well-defined API which allows Metalog generation from our customers’ executable programs.  For example, Mark H. and Jim S. have created Metalog entries from Java and more recently, from run-time metadata checks from DDS.  This means that the metalog supports datatypes for publishing that have been generated during run-time.

MetaGen uses the same Metalog API, and has been tested to support “nested” classes up to 10 layers deep, as well as variable length arrays.  Although such variable length arrays are available, we would prefer not to use them because it slows down performance. The biggest advantage MetaGen offers over the offering in 2015 is that can extract metadata at run time.


Question #2:

How does the process of using RTTK MetaLog & MetaGen compare with traditional methods?


In all projects I have worked on, data collection records (DCRs) or logical recording identifiers (LRIDS) have been hand-crafted and tested early in the development cycle. They are fixed because tools and other support software would need to change if the DCRs did. Typically, the DCRS are “flat” c-struct like classes. They typically consist of only primitive types, and are inherently fixed length. Usually the DCR is placed into a memory buffer using in-place new (or memcpy), and this memory is written to a binary file, requiring later transformation of the data to the target format (such as Matlab files).


Question #3:

What is innovative about how RTTK does it?


While RTTK works faster with fixed length types, we offer nesting on-the-fly MetaLog generation simplifying the process when structures change. These capabilities provide a more fluid recording experience. An HDF5 publisher provides SWMR (single write multiple reader) allowing customers to literally analyze data while their system is running.


Question #4:

What new and cool capabilities are you working on?


RTTK now allows TCP communication of a JSON representation of FDAs during system run-time. We have built this interface to enable real-time data visualization. We’ve created scatter plots using time as the x-axis and a user selected field as the y-axis. These plots dynamically update as new data arrives.

Another exciting capability of RTTK leverages data directly from recorded application data (FDA’s) to perform IF, THEN checks. So, if an FDA indicates a negative centigrade temperature, the real-time data value checking may assert an alert FDA, indicating the freezing temperature in Fahrenheit. While these boolean logic capabilities already exist with RTTK, the real excitement comes from leveraging new machine learning algorithms to classify and make decisions that trigger the logic in real-time.

In short, we can perform real-time visualization from a running system, we can verify the value of individual fields within recorded FDAs in real-time and assert new or delete an FDA as a result. We are working on real-time classification and decision making based on time series extracted from recorded FDAs.




Q & A with Jim S.


Questions #1:

Can you describe what you did on the FishEye Real-Time Platform (RTTK) project?


I help provide data capture for a simulation framework written in Java.

I continued work originally started by Mark H. by enhancing and improving the Java interface to RTTK. Mark was successful in getting the project going, but I enhanced the interface with support for complex datatypes and more robust safeguards. FishEye’s implementation allows the simulator developer to record all fields of a Java object with a single line of code.


Question #2:

Why was there a need for the Java interface?


Our customer requested the ability to log extensive amounts of Java data with the same simplicity we enjoy with C++.


Question #3:

What were some of the challenges?


By its very design, Java attempts to “hide” the details of its inner workings in order to make things “easier” for the normal developer. Unlike C++, Java objects are scattered around heap memory, and their locations are in a constant state of flux due to “garbage collection” which runs at random times. Acquiring and dealing with this “hidden” information through introspection (such as addresses, types, and lengths) at times felt like fighting city hall while herding cats. The simulator also wanted to log extremely complex variable length data types, which until recently RTTK could not support.


Question #4:

Can you explain the differences between the Java and C++ interfaces?


Both the Java and C++ interfaces aim to be as simple as possible for the end user. One line of code is all that is needed to record an object. In the Java interface, that one line of code is able to both collect metadata defining the structure and collect the application data. However, the inner workings are completely different.
The C++ interface simply requires a pointer and a length, and records a block of data. Traditionally, it has focused on fixed length data.

The Java interface has to hunt down memory addresses for each field scattered throughout memory (a deep copy). Depending on what is being recorded, these addresses often point to other arrays of addresses, which point to addresses on a third level, which must then be dereferenced. Each field must be fetched and assembled in a single block prior to each record call.

Armed with a highlighter and a high pain tolerance, we ascertained the memory layouts of the most common Java object types. For example, recording a 3D Matrix of floats consists of 7 separate “SubObjects”, all in different locations. (See diagram below.) Each of the 7 pieces (top section of image) must be located and concatenated into a single block (bottom part of image) to be recorded with RTTK. Because addresses can change at any time, the address chain has to be re-traced with every record call. In addition, Java makes extensive use of variable length types, which means we need to create a table with every record call specifying where each field begins and ends in the buffer we pass to RTTK.


3D_Matrix_Memory_Layout 794 x


Question #5:

What were the end benefits that RTTK interface contributed to the project?


The RTTK interface allows Java developers to record all data in an object with a single line of code. In the past, the simulator developer team had to write custom routines to log data to text files. These routines had to be updated anytime the structure changed. By performing the introspection and recording to HDF5 on the fly, we allow the user to record objects with much less development cost, upkeep, and hassle than what was ever traditionally possible.


Question #6:

What new & cool capabilities are you working on?


We recently started work on a radar front end simulator. The simulator software runs on many (10s) of embedded computer systems, each simulating radar beam steering drivers. The simulation is controlled by a master computer. Since each embedded board has no local storage, we are advancing RTTK’s distributed recording capability. This will allow us to ship data from each embedded board to the master computer where the data will be recorded.







FishEye’s Real-Time Platform (RTTK) Product Roadmap Includes an Integration with DDS for Real-Time Systems


Ted Selig, Marc Brown and Jim S. attended the Connext Conference May 16-17, 2018 to exchange technology plans as well as learn how others are using DDS. FishEye is expanding its product integration with DDS.

Many of FishEye’s customers use DDS for interprocess communication and network connections on real-time and embedded systems.

RTI is a market leader in DDS technology. DDS, is the only open standard for messaging that supports the unique needs of both enterprise and real-time systems.

FishEye’s Real-Time Platform (RTTK) product roadmap includes an integration with DDS for real-time publish and subscribe of DDS messages. The RTTK+DDS integration automates and simplifies high-performance HDF5 archives for DDS data. It also opens real-time machine learning analytics of DDS resident data.



Team Travels


Peter M. and Ben C. traveled to Sasebo, Japan for a working cruise to Singapore for a maintenance overhaul, March 12 – April 2.

travel fixed

team travels 1358







John R Crowley Jr

Your Input

Help us improve your time @ FishEye!

3 Questions

John Crowley