top of page
Code_Skills_Small_Scatt_3_edited.jpg

Projects

3163790 - aim business chart flow planni

I have worked on many interesting and rewarding projects so far in my career. A summary of some of the ones that stand out the most for me is given below.

 

If you would like to get in touch about your project, just send me an email at cbudgen@cbintex.com or message me from my Contact page.

CBINTEX, 2018 - Present

As a freelance software architect-developer, I have worked on a number of consultancy projects, including:

EDRMS.png

EDRMS for Government

Designing and developing the back-end for a new Electronic Document and Record Management System (EDRMS) for Government Agencies, on behalf of an Australian-based start-up.
 

Technology: C#, .NET Core 3, SQL Server, GroupDocs

Loan Data Management and Analysis 

Developing web services, APIs, CLI components, algorithms and client-side UI components for a Mortgage/Loan data management and analysis system. 

Technology: Golang, C, Python, TypeScript, Javascript, Node.js, OpenAPI, AWS EC2 / S3 / Lambda/ Step Functions / CloudFormation, Azure Functions / Resource Manager, SQLite, PostgreSQL, Databricks, Snowflake, Stripe APIs, gitea, Cypress

TravelSystem.png

Online Travel Solution

Developing proof of concept solutions for a new, Melbourne-based online travel agency start-up.
 

Technology: C#, HTML, Java Script, Selenium,  Office SDK

XenoConsultancy.png

Xenomorph TimeScape

Providing consultancy development services to Xenomorph for their core TimeScape product.
 

Technology: C#, C++, C, .NET, Win32, MFC, STL

Xenomorph - Systems and Engines

During my time as CTA at Xenomorph and subsequently as a consultant, I designed and co-developed many of the company's core software engines needed to address the wide variety of challenges being faced by our customers in the area of data and analytic management. All of these engines were designed for longevity, a testament to which is that they are still in use today as part of Xenomorph's Enterprise and Cloud solutions:

AnalyticsServicesEngine.png

Analytical Services Engine

A server-side analytics engine that allowed third party analytics to be plugged in as adapters based on a publicly supported SDK and utilised within server-side queries. In addition to the SDK, the system also allowed Excel XLLs to be registered directly and used in data analytics without any additional coding.

Technology: C#, C++, C, .NET, Win32, MFC, STL, Excel SDK, Assembly x86/x64

DataBroadcastEngine.png

Data Broadcast Engine

A set of server-side service components for defining tasks to broadcast user-defined universes of streaming data, including static data, time-series data, jagged (folded) data and derived data (e.g. time series calculations). A plug-in framework was included that allowed various financial data feeds (e.g. Thomson Reuters,) to be connected directly into the engine and used as a target for the published data. In addition to the server-side framework, a desktop-based user interface and client-side APIs were created to allow the server-side data broadcast tasks to be defined, controlled and monitored.

 

Technology: C++, C, Win32, MFC, STL

Database.png

NoSQL Database Engine

A high-performance database engine that supported the easy definition, storage and controlled security of object data at scale. I first created the database engine in 1995 and went on to continually expand its functionality in the years that followed. At the time of its inception, it was essentially a NoSQL database - even though the term “NoSQL” had yet to be invented (“NoSQL” only came into existence in 1998 and then would only become mainstream and generally accepted in 2009). The database engine utilised key-value, document and column store technology which allowed object data and fields to be optimally and flexibly stored on a static, semi-static and time series basis. Its primary use was in storing and retrieving large quantities of financial data at high speed for data analytics and regulatory purposes.

 

Technology: C++, C, Win32, STL

QueryScriptingEngine.png

Query Scripting Engine

A server-side scripting engine that supported the Xenomorph QL+ language. This language offered an object-orientated syntax that allowed execution and parallelised processing of analytical queries on either individual data objects or collections. In addition to targeting pure data, analytical expressions involving analytical functions and objects could also be included in the query expressions to perform data analysis and manipulation. Query expressions were configurable via a desktop-based component that supported syntax colour coding and Intellisense.

Technology: C#, C++, C, Win32, .NET, MFC, STL

SpreadsheetInside.png

Server-side Spreadsheet Engine

A server-side, multi-threaded Excel-like spreadsheet engine known as Spreadsheet Inside (SSI) that was developed for Xenomorph for use in data analysis and reporting. The spreadsheet object supported Excel-like cell referencing, ranges, cell names and array formula. In addition to simple data types, SSI cell formulae were also able to support multi-dimensional and time series data which could then be combined together to perform complex calculations (e.g. = Series.Volatility()). The SSI engine was configurable via a desktop-based Excel-like editor that offered full support for formula definitions, function editing, query expressions, named ranges, Intellisense and colour-coded cell dependency tracking.

 

Technology: C++, C, Win32, MFC, STL

TickCaptureEngine.png

Tick Capture Engine

A set of server-side service components for defining tasks to subscribe to user-defined universes of low latency streaming data, for capture into normalised data stores. This involved significant use of threading, inter-process communication and queues to subscribe to the field-based data sets. A plug-in framework was included that allowed various financial data feeds (e.g. Thomson Reuters, Bloomberg, Interactive Data) to be connected directly into the engine and used as a source of data. In addition to the server-side framework, desktop-based user interfaces and client-side APIs were created to allow the server-side tick capture tasks to be defined, controlled and monitored.

 

Technology: C++, C, Win32, MFC, STL

TimeSeriesAnalysisSystem.png

Time Series Analysis System

A system for the analysis of financial time series data in real time. The system was able to capture and analyse daily, historic and slow-changing time series data of any data type, ranging from simple numerical data to complex, multi-dimensional data.  Analytic functions were registered via add-ins that were developed against a publicly supported SDK.

 

Technology: C#, C++, C, Win32, .NET, MFC, STL, Excel SDK, XLL, Assembly x86/x64

Xenomorph - APIs, Adapters and Connectors

In addition to the software engines, I designed and co-developed many APIs, adapters and connectors to 3rd party systems, including: 

BloombergDataFeedAdapter.png

Bloomberg API Data Feed Adapter

A real-time connector to the Open Bloomberg API data feed, allowing static, real-time and historic data to be requested and consumed.

 

Technology: C++, C, Win32, Bloomberg API

COM_API.png

COM API

A fully functional COM API containing 30+ business objects and their supporting methods for read/write access to server-side data and analytical services.

 

Technology: C++, C, Win32, ATL, COM

Python.png

CPython Add-in

A client-side CPython extension module providing read-write access to server-side data and analytical services.

 

Technology: C++, C, Win32, CPython SDK

Excel.png

Excel XLL API

A client-side Excel add-in developed with the Excel XLL SDK. This registered over 200 worksheet functions providing high performance read-write access to server-side data and analytical services.

 

Technology: C++, C, Win32, Excel XLL SDK

ODataAPI.png

OData Web Service API

A server-side ASP.NET web service supporting the OData interface allowing analytical queries to be requested, executed and returned, for consumption from 3rd party Business Intelligence services such as Microsoft Power BI.

 

Technology: C#, ASP.NET, OData

OfficeAddin.png

Office Add-in

A client-side Microsoft Office add-in, supporting a full ribbon interface and providing end-user user tools for interacting with application services and examples for data analysis.

 

Technology: C#, .NET, Office SDK

R.png

R Add-in

A client-side R package providing read-write access to server-side data and analytical services.

 

Technology: C++, C, Win32, R SDK

ReutersDataFeedAdapter.png

Reuters API Data Feed Adapter

A real-time connector to Thomson Reuters data feed, allowing static, real-time, page and historic data to be requested and consumed.

Technology: C++, C, Win32, Reuters RFA C/C++ API

Tableau.png

Tableau Data Extractor

A client-side command-line tool for extracting data and analytical results from a source system and generating Tableau Data Extract (TDE) files, which can then be accessed from within Tableau.

 

Technology: C#, .NET, Tableau TDE SDK

Xenomorph - Desktop Applications and Tools

In addition to the software engines and connectors at Xenomorph, I also designed and co-developed the following desktop applications and and tools:

Workbench.png

Workbench Application

An add-in based, Outlook style desktop application for viewing data, task configuration and management, database configuration and management, data and basket analysis, Spreadsheet Inside configuration and system administration.

 

Technology: C#, C++, C, Win32, MFC, .NET

Other Business Applications

Prior to forming Xenomorph, I worked as a developer in a number of companies. During that time, I developed the following systems and frameworks:

PnLExplanation.png

Equity Derivatives P&L Explanation System

A system for analysing the position-risk profile of an equity derivatives trading desk and explaining the profit & loss due to changes in the underlying risk factors (FX, interest rates, underlying asset prices etc.)

 

Technology: Paradox for Windows, SQL at Bankers Trust Ltd

EventBasedSimulationFramework.png

Event-based Simulation Framework

A simulation engine that allowed the digital modelling of real-time processing systems. The system was primarily used to model steel foundry production lines and to optimise their flow under user-defined scenarios.

Technology: FORTRAN 77, Windows at Rex, Thompson & Partners Ltd

PageBasedDataPublicationSystem.png

Page-based Data Publication System 

A pre-Internet page publication system used to define and broadcast 80x25 character pages across an internal network. The system included a full WYSIWYG editor for defining the page definition regions based on database extracts, which typically involved the publication of end of day prices and positions.

Technology: C, OS/2 at Daiwa Europe Ltd

PairsSpotter.png

Pairs Trade Opportunity Spotting System

A system for analysing large quantities of historical price data on financial instruments and identifying buy/sell trading opportunities due to potential price mismatches.

 

Technology: C++, C, SQL at Daiwa Europe Ltd

My (Much!) Earlier Years: School

I was introduced to programming at a relatively early age during the birth of the personal computing era, first by being given access to an Acorn Computers BBC Micro in science lessons at school and then later to a Commodore PET 4032 computer which my father brought home from work at weekends. From that point on I was hooked.

SpaceInvader.png

Space Invaders

I wrote a full working version of Space Invaders for the Commodore PET but unfortunately, because it was written in PET Basic, it ran extremely slowly! It was only after discovering the C and Assembly programming languages later in my early working career that I realised how to make it run much faster. I'm sure that kids today, with all the wonderful game tooling they have at their disposal, have absolutely no idea just how lucky they are! There again, I think my father would have said exactly the same thing to me at the time...

Technology: PET Basic (now only available in museums...)

If you would like to get in touch about your project, just send me an email at cbudgen@cbintex.com or message me from my Contact page.

bottom of page