Below are some projects which are representative of my professional experience over the last 15 years.
Pattern Compiler for Semiconductor Test
This was a major project, for which I spent over 4 years as a senior (staff) software engineer. For testing semiconductors, this software is used to compile patterns, which are a sequence of stimuli applied to the device under test, and expected responses.
In this role I was one of 2 lead developers who took the project from its inception into high volume production with major customers including Intel and AMD. The team also developed a suite of system software, including linkers, loaders and translators.
As the team expanded, I served as a mentor and technical advisor for other engineers. I was eventually promoted to be the software development manager for the entire team, and spent another 4 years overseeing the roadmap, project planning, priorities, development and engineering staff working on the project.
Although the C++ source code for this project remains proprietary, a conference paper I wrote with some colleagues describes the compiler’s overall architecture and design.
MailShredder Email Privacy App
For a time during the initial growth of the iPhone and iPad market, my company was focused on iOS app development for the iOS app store. I implemented a few smaller apps to learn the platform, but MailShredder was my first commercial app.
MailShredder was a privacy tool, where users could setup rules and filters to systematically delete old or sensitive emails. For example, the app could be configured to filter and delete any message older than 1 year. Below is an example screen capture showing MailShredder’s screen for filtering and deleting messages:
MailShredder found a niche and sold to thousands of customers. Although I’m no longer supporting or maintaining this app, I do plan to open source the ObjectiveC source code for archival and educational purposes.
FutureBudget Financial Planning and Forecasting App
The 2nd app my company released was a tool for financial planning. This tool supports the input of budget line items and “what if” scenarios, then allows the user to get a combined forecast of cash flow, loan balances and investment returns into the future.
Below are some screenshots from this app, which highlight some of the app’s functionality.
Screen to enter budget line items:
A plot of future cash flow:
Amortization of a loan:
“What-if” scenarios:
FutureBudget marks a shift of my company’s focus towards financial technology or “FinTech”. Although the company still had a catalog of iOS applications, the R&D focus had expanded and shifted into the financial domain.
As you can see in the screenshots above, the user interface for the project is relatively simple. However, the software to do the forecasting and what-if scenario analysis is quite involved. I’m no longer supporting or maintaining this app, and may open-source the ObjectiveC source code for archival and educational purposes. Another option is to implement a desktop user interface with the same back-end for forecasting and what-if scenario analysis.
Stock Market Chart Pattern Recognition Tool
To support research into the the financial markets, I wrote a pattern recognition software tool to identify geometric price patterns consistent with price consolidation, breakouts and the like. This type of pattern recognition implemented in software is definitely a challenging exercise in algorithm design.
Recently, I wrote an article which used the tool to support the analysis of chart patterns during 2018 and 2019. This article include numerous examples of patterns which were identified by this tool.
The project was written in C++ with a Qt graphical user interface. Below is a screen capture showing a pattern match for a “Falling Wedge” pattern:
Besides being used for internal research, the tool was made available to the investment community. The project is no longer active, but the C++ source code has been open sourced for archival and educational purposes. The project consists of 2 components. The first is a pattern recognition library, which implements the pattern matching algorithms. The second component is a graphical user interface, implemented using the Qt framework.
Resultra Project Tracking Tool
Resultra is a web application for project tracking. The project was built with a dual purpose of supporting internal research into the financial markets as well as being released externally as a web application or SaaS.
Internal to my company, the application was first leveraged for use cases like trade journaling, backtesting, forward testing and investment strategy development. The application was recently released externally as an open-source (community) project for use cases like Scrum project tracking and trade journaling.
Below is an example screenshot showing Resultra’s main window with Scrum project tracking:
A key feature for Resultra is the ability to flexibly configure which information is tracked and how this information is viewed or entered. This is accomplished using an interactive form builder and fields for different types of information. For example, for a trade journaling use case, below is a screenshot showing a custom form to enter information about an individual trade:
The project is a comprehensive, full-stack web application built with Javascript and jQuery on the front-end and a Go (Golang) back-end. Besides including a large scale Golang and Javascript software development effort, my contributions to the project have included build tools, documentation, integrating the system for deployment with Docker and Ubuntu Linux, and test suite development.
Resultra has recently been open sourced. More detailed information is available on the project’s main website or GitHub page.
Systems Trading Research & Development
Research and development into systems trading and the financial markets is seemingly unrelated to the software development projects described above. However, a research interest in this topic traces back to my graduate studies involving system dynamics, as well as systems R&D roles outside the domain of trading and investing. What I’ve found is these skills and disciplines are readily transferrable to trading and the financial markets. Moreover, I’ve been able to leverage my background in software development to help with quantitative analysis and systems validation.
My research has centered around the study of volatility and momentum. This has culminated in the development of longer-term strategies for producing superior risk-adjusted returns. I’ve put several of these strategies into production with dedicated accounts.
I’ve begun to share some lessons learned with the investment and trading community; to this end, below are some articles I’ve written which are based upon my approach to the markets and lessons learned:
- A Volatility Based Momentum Indicator for Traders
- A Volatility Based Oscillator Indicator for Traders
- Use Small Position Sizes to Manage Risk and Improve Trading Psychology
- 10 Specific Tactics to Become a More Patient and Disciplined Trader
- Find Your Niche by Developing Balanced and Individualized Trading Systems
Besides the market research and quantitative analysis needed to formulate trading and investment strategies, my holistic and balanced systems development methodology takes into consideration the human factors which can cause a system to succeed or fail as a whole. From an article I wrote on this topic, below is a diagram which summarizes the overlap between these human factors and an overall trading system:
In an interview with Matt Zimberg at Optimus Futures, we had the opportunity to discuss this overall methodology and how to develop systems which consider both technical and human factors:
Other Work Samples
I fully appreciate that a project doesn’t start or stop with the software development itself. In support of systems and software development, below are some other competencies which have proven valuable:
DevOps: For numerous projects, I’ve been responsible for setting up the tools and infrastructure to build, test and release software. On Resultra, for example, I wrote the build and packaging scripts in Python and recently integrated the builds with Travis CI for release builds and deployment. For parts of the process which aren’t fully automated, I’m also proficient developing and writing up repeatable checklists; for example, Resultra includes a check-lists for installing the software and provisioning a development system.
Technical Writing: Some samples of my writing are available on my blog. I appreciate the importance of writing in a concise, clear and articulate manner.
Website Development: To support professional projects and community service endeavors, I’ve developed numerous websites. For example, I developed a Weebly based site for my HOA, and a Joomla based site for Resultra. This site is developed using Hugo. Rather than building a site from scratch, I’ll typically use a content management system such as Joomla and a template; however, I’m comfortable working with Javascript and CSS for further customization. Besides developing websites, I’m proficient with Linux-baed installations and configurations of third party web applications