Overview
Software engineer with over 8 years experience designing and writing developer tools, back-end services and front-end applications. Experience with software consulting, engineering leadership, technical documentation and software delivery.
Domain experience in financial technology and prior experience working in the investments industry.
Work Experience
Field Responder, Inc. | Oct 2020 - Present
Co-Founder, Chief Technology Officer, Chief Financial Officer (interim)
Field Responder, Inc. provides backcountry field response geographic information system (GIS) management software, software defined radio (SDR) trail mesh networks based on LoRa devices and recreational land user applications and services to reduce risks and time-to-response of incidents in the backcountry.
As CTO, my primary responsibilities include software development of the backend systems, mobile applications and embedded devices that enable field personnel to communicate in real-time with command centers and recreational land users in the backcountry.
Backend and embedded systems are primarily written using Rust and mobile applications are developed using the Flutter framework based on the Dart language.
As CFO, my responsibilities include fundraising and grant application writing. Additionally, I've automated our accounting systems using Mercury Bank's APIs, enabling the company to produce periodic financial statements in accordance with U.S. GAAP for tax preparation.
Field Responder is also working on a backcountry insurance product, and as CFO my responsibilities include actuarial risk modeling and treasury management of insurance funds.
Emergent Financial, LLC | Jan 2018 - Present
Founder & Chief Software Engineer
I founded Emergent Financial, LLC in January 2018 to consult and write software services for investment and financial institutions.
My responsibilities in this role include growing the business, research & development, writing proprietary and open source software and consulting.
Over my career, I've worked with investment firms, financial technology companies, banks and Fortune 10 companies. The accumulation of these experiences has led to providing an array of services, with software solutions ranging from portfolio management to asset issuance.
M10 Networks, Inc. (M10) | Dec 2019 - Apr 2020
Sr. Software Engineer (Platform
)
M10 provides international monetary authorities low-latency, high-throughput distributed ledgers for the issuance and transmission of digital currencies. The engineering team is roughly 10 individuals split between client and platform teams. I work on the platform team as a sr. software engineer, writing micro-services in Rust.
My primary responsibilities in this role include drafting technical documentation for new services, receiving peer review from fellow engineers on architecture and integration, writing Jira epics/tickets for planned work, reviewing work estimations at weekly stand-ups and grooming, writing, documenting and testing software and deploying services.
Primary applications include writing banking adapters using bank APIs for the administration of on-boarding bank customers, sending and receiving payments, bridging the communication with the core distributed ledger, writing liquidity management checks for the movement of money between double entry records.
Additional work has involved writing custom sanctions screening software, parsing government issued XML sanctions entity lists into searchable indices to return search results within ~1-2ms. This service is used in the processing of transactions for anti-money laundering (AML) and know-your-customer (KYC) checks.
Token, Inc. | Jan 2019 - Dec 2019
VP of Engineering & Sr. Software Engineer (Token X
)
After consulting at Token for 6 months, I joined the company as a sr. software engineer and VP of engineering, leading a team of 3-5 remote engineers. I was involved in the hiring, on-boarding, design of the core architecture and technical decision making of the Token X
project.
The Token X
project originated as a stablecoin cryptocurrency platform built on Stellar, providing web application integration with bank accounts using Quovo (bought by Plaid). Primary work included building back-end account APIs and a front-end web and mobile application with wallet integration for sending transactions to the Stellar network.
Additional work was done into building identification card readers using optical character recognition (OCR) and checking for liveness using using AWS Rekognition APIs during the on-boarding of customers into the payments application.
The project and team was eventually spun out into a separate legal entity, M10 Networks, Inc. in December 2019 and has shifted its focus to central bank digital currencies using proprietary systems built in Rust.
Token, Inc. | May 2018 - Dec 2018
Engineering Consultant (Token X
)
Prior to joining full-time, I consulted for Token on the research and development of the Token X
project. Research included writing smart contracts and benchmarking transactions per second for various distributed ledger and blockchain technologies, such as JP Morgan's Ethereum-based Quorum, Ethereum and Stellar.
In 2019, I joined Token to work on the Token X
project full-time.
Consensus Systems, LLC (ConsenSys) | March 2016 - May 2017
Engineering Consultant (ConsenSys Enterprise Ethereum)
ConsenSys is an application development studio building on the Ethereum network. I consulted for ConsenSys on various projects for Fortune 10 Enterprise Ethereum clients. Works included writing a bond issuance platform, peer-to-peer energy grid trading platform and oil futures trading platform.
Core work included writing Ethereum smart contracts, back-end APIs, a request-for-quote (RFQ) system, bond and options pricing modules, and front-end trading applications using WebSockets and React. Additional work included building the JP Morgan Quorum blockchain explorer demo for Enterprise Ethereum Kick-off.
I left ConsenSys to build GitToken, an open-source distributed git rewards platform.
Venture Equity Exchange (formerly Peer Market Exchange) | Sep 2014 - Jan 2016
Founder & CEO
Originally built on the Bitcoin blockchain using colored-coins under the project name Peer Market Exchange
, Venture Equity Exchange was the continuation of the application on the Ethereum network, building a decentralized platform for trading assets before the standardization of the ERC-20 contract.
Original project was intended to help fund small businesses through convertible debt, ideas that were later encapsulated by Simple Agreement for Future Tokens
(SAFT) contracts.
The original venture equity team of five engineers was formed after a hackathon and three of the members of the team joined the ConsenSys mesh after demoing the exchange to Joseph Lubin, CEO of ConsenSys.
Threshold Group, LLC | Aug 2011 - Nov 2012
Investment Analyst
Threshold Group, LLC was a private family office for ultra-high net worth individuals, whose assets must exceed $100M to be accepted as a client. Threshold Group was founded by George Russell Jr. of Russell Investments, to manage the Russell family's wealth. It was later bought by Tiedemann Advisors.
I joined Threshold Group as an Emerging Markets Equity Investment Analyst, covering roughly $300M AUM. I wrote statistical software in R, analyzing portfolio manager performance and processing time-series data into visualizations for portfolio decision making.
In addition, I had weekly calls with portfolio managers on allocation changes, performance updates and market outlooks. I was involved in building a qualitative and quantitative investment research tool used to help our Chief Investment Officer determine final portfolio decisions. Colleagues of that team went on to build a product called RedQuarry, which eventually sold to Nasdaq's eVestment.
In addition, the team worked on adaptive asset allocation strategies using exchange traded vehicles (e.g. ETFs, ETNs). In 2012, I was involved in writing a currency hedge strategy to reduce volatility during the European financial crisis. Work involved writing a Monte Carlo simulation for interest rate sensitivity analysis (e.g. Macaulay and modified duration) on our currency and bond exposures.
Also during this period I studied for the competitive Chartered Financial Analyst (CFA) Level 1 exam, testing in June 2012 and resulting in score band 10. During this period, Bitcoin was gaining attention, reaching $1,000/BTC and I left Threshold Group to build Bitcoin financial applications, which led me to dive into distributed systems, smart contracts and digital payments.
Education
University of Puget Sound | Aug 2007 - May 2011
- Bachelor of Arts (B.A.) International Political Economy
- Bachelor of Arts (B.A.) Business Administration (Finance Emphasis)
Technologies
The following sections provide a comparison of technologies I have used or encountered while working with various software groups. It is not an exhaustive list.
Additionally I have provided a proficiency scale to help others better understand my command of a certain skill or tool, and a quick blurb about how I've applied a group of technologies.
Here's a quick way I relate these scales:
New |.
Learning |..........
Debugging |...................
Commanding |.............................
Mastering |...................................
------------|-----------------------------------------
Proficiency 0 25 50 75 100
Cryptography
I've used the following cryptographic algorithms, libraries and concepts for securing application network communication, hashing secrets, signing and verifying messages, and encryption. I've additionally used the iOS CryptoKit to sign messages using private keys stored in the device's secure enclave. It is important to note my proficiency of the algorithms below is in regards to the use case of a tool or library within an application. E.g. I have not implemented the Ed25519 algorithm, but I have used ed25519_dalek
Rust library.
mTLS |.......................
Ed25519 |............................
iOS CryptoKit |..........................
RSA |........................
SHA |............................
Blake2 |...........................
Argon2 |.............................
Ring |......................
OpenSSL |.............
----------------|-----------------------------------------
proficiency 0 25 50 75 100
Databases & Message Queues
I have included message queues in this category given the durability of information written to a message broker.
RocksDB |...........................
SQLite |.........................
PostgreSQL |........................
TiKV |..........
Sled |.............
MongoDB |...................
Memcached |...............................
Reddis |.......................
Kafka |........................
RabbitMQ |.....................
-------------|-----------------------------------------
proficiency 0 25 50 75 100
Deployment, Service Orchestration, Proxy & Ingress
I've used the following tools in the continuous deployment and networking of services. I've deployed services to AWS, GCP, Digital Ocean and Azure. For smaller projects, I tend to use Docker Compose; for production environments, orchestrating Kubernetes using Helm.
Docker |............................
Docker Compose |............................
Drone |.................
Jenkins |..............
Kubernetes |.................
Helm |..................
Minikube |.................
NGINX |......................
Envoy |..............
----------------|-----------------------------------------
proficiency 0 25 50 75 100
Consensus Protocols & Platforms
Some of the systems below are distributed consensus protocols, while others are centralized services for orchestrating distributed systems, such as zookeeper for Kafka or etcd. Additionally, some of the protocols below are blockchains, such as Ethereum and Bitcoin.
Substrate and Ethereum are both distributed smart contract BFT protocols, and I am currently learning Substrate's ink!
smart contracting and pallet framework.
Raft |...............
Paxos |............
Tendermint |...................
Substrate |...................
Ethereum |...........................
Bitcoin |........................
Stellar |..........................
Zookeeper |.......
etcd |.......
-------------|-----------------------------------------
proficiency 0 25 50 75 100
Documentation
These are the most common tools I use when writing documentation. I've added OpenApi (swagger) for documenting RESTful APIs, as well as for code generation.
I find RustDoc and mdBook, to be extremely helpful in writing technical documentation and tutorials.
PlantUml is used for generating a variety of diagrams (e.g. sequence, action, component) from written text. It can additionally be styled using skinparams processor.
I've added Criterion for benchmarking, as I have found it to be an extremely helpful tool for profiling source code.
PlantUML |..................................
Lucid Charts |................................
mdBook |.............................
RustDoc |...........................
OpenApi |...............................
Criterion |...............................
-------------|-----------------------------------------
proficiency 0 25 50 75 100
Languages
I have been predominantly focused on writing Rust for the last 6 months and have used TypeScript and JavaScript (NodeJS) for several projects in my career.
For mobile development, I've written a gRPC client in Objective-C for a React Native application using the JSBridge foreign function interface (FFI). I am compiling Rust into WebAssembly, which is used by the Substrate project, as well as the Rust web-application framework, Yew.
Rust |........................
TypeScript |.............................
JavaScript |..............................
Java |...............
Python |..............
Go |..........
WebAssembly |..................
Dart |.........
Kotlin |...............
Objective-C |.........
Swift |.........
C/C++ |.........
Solidity |......................
Bash |..........................
HTML |...............................
CSS |...............................
-------------|-----------------------------------------
proficiency 0 25 50 75 100
Mobile Application Frameworks
I've built prototype mobile applications with the following technologies, as well as have written native code in Object-C, Swift, Kotlin and Java for integrating with native device APIs.
React Native |.........................
Flutter |.................
-------------|-----------------------------------------
proficiency 0 25 50 75 100
Networking Protocols
Networking protocols includes low-level internet protocols, such as writing to raw TCP streams, as well as web service protocols, such as JSON-RPC or RESTful APIs.
For communicating with back-end services, I tend to use gRPC and protocol buffers to define my message schema and route my requests. I am currently using Tonic for my building and running my gRPC service and client libraries. I've also used an IPC socket mounted on shared volumes for service communication.
Ever/IP is a mesh networking IPV6 application layer gateway, useful for distributed systems communication behind different networks. It uses the noise protocol framework, similar to WireGuard VPN tunneling, for securely establishing connections between mesh nodes.
I've used WebSockets for streaming broadcasted messages to connect clients, such as web browsers.
gRPC |................................
REST APIs |..................................
WebSockets |...............................
IPC Socket |...............................
JSON-RPC |...............................
TCP/IP |........................
UDP/IP |........................
Ever/IP |........................
WireGuard |..........
-------------|-----------------------------------------
Proficiency 0 25 50 75 100
Programming Fundamentals
There are a variety of different programming fundamentals and patterns, these are some of the most common I have used. Most of these patterns are familiar to Object Oriented Programming (OOP) and to languages that implement typed definitions with interfaces or traits.
Programming principles like concurrency and parallelism introduce concepts around memory management and shared references. Rust is particularly useful in this regard, as the compiler guarantees that mutable memory shared across threads is free of race conditions. Rust allows for manual control over memory, requiring the programmer to explicitly use an atomic reference counter and mutex for cloning the underlying reference and acquiring a locked mutex guard on the data when mutating its value, preventing other threads from writing to that data while held.
Builder Pattern |.............................
Adapter Pattern |.............................
Proxy Pattern |.............................
Bridge Pattern |.............................
Command Pattern |.............................
Decorator Pattern |.............................
Micro-Services |.........................
Mono-Repos |............................
Multi-Threading |......................
Memory Management |....................
------------------|-----------------------------------------
proficiency 0 25 50 75 100
Project Management
Whether as a project lead or software engineer, I have used the following tools for project management.
All code is managed using Git repositories. Typical works flows have used git-flow
for tagging branches, managing release and bug patches. I've used GitHub's project board and issues to plan and track work. Additionally, I've used Jira for adding planned work to the backlog and managing code sprints.
Git |..............................
GitHub |............................
Jira |........................
-------------|-----------------------------------------
proficiency 0 25 50 75 100
Serialization Formats
Aside from the common data serialization formats, such as JSON or XML, the following are binary serialization formats that I've used.
There are a variety of reasons to use one serialization format over another, such as a self-describing format, human readability, serialization speeds and data compression among others.
Protobuf |..................................
Flatbuffers |...........................
Cap'n Proto |........................
Bincode |..............................
MsgPack |..............................
-------------|-----------------------------------------
proficiency 0 25 50 75 100
Tracing, Visualizing, Logging & Monitoring
These are a few telemetry tools I have used for monitoring service statuses.
Prometheus |..............
OpenTelemetry |..............
Jaeger |..............
Grafana |..............
--------------|-----------------------------------------
proficiency 0 25 50 75 100
Web Application Frameworks
Most of the web applications I have written are based on React. I've written a few Vue apps. Recently, I have been experimenting with the Rust Yew project using Web-Sys. I would likely still write web applications using React. While not a web application framework, I've included Electron for building desktop applications using React.
React |...............................
Electron |..........................
Vue |................
Yew |.............
-------------|-----------------------------------------
proficiency 0 25 50 75 100
Contact
Thank you for visiting my web site. Let's connect!