Bash
Tommy + the language of Bash
Home Capabilities Languages Bash
Bash Examples

pull.systems
EV Observability + Analytics2023 - 2024
Upon joining, I came up to speed quickly on the stack of the early version of Pull Workbench, which was very buggy but demonstrated the initial ideas and had a solid set of the latest technologies and patterns established in the codebase, providing for a solid starting point.
I was entrusted to aid our CTO in hiring several additional employees, and so I joined and conducted interviews for the first several months while working with the existing team AI + Full Stack to deliver features and solidify the system, with the aim of keeping it fully working with each merge, after playing a little catch-up to fix the early bugs that worried our business partners, giving them confidence that our team could deliver.
From there, I developed full stack features solo or by pairing with team members, and ultimately led a squad of 5 team members alongside a second squad that together comprised our engineering team.
Much of my time went into authoring complex analytics sql queries using the impressive Kysely library, a fluent, typesafe query builder that we used for our postgres and redshift databases. Given the nature of the product, we needed to make decisions on which queries could be run in real time vs. which queries and subqueries would need to be computed offline as part of a network of airflow dags.
On the ML Ops side I advocated for traceability and reproducibility / determinism of all models and artifacts, and integrated with systems that implemented that, such as Airflow to coordinate DAGs of ML training jobs and Sagemaker's metadata API, which we controlled via model lifecycle automations that produced and stored models, artifacts and metadata that were in turn consumed at runtime or in batch by our analytics stack
On the frontend, I helped us deliver an initial version of the Pattern Editor, a UI and set of APIs that users could use to put together their own patterns of interest, such as looking for certain anomalous ranges of quantities that themselves may be derived from other user-defined patterns. This entailed not only a UI that was DAG-aware but also a layer that converted the json representation of these patterns from the frontend into typesafe kyesely queries to be executed against redshift.
Key Results
- Led 5-person squad delivering Pattern Editor enabling custom anomaly detection workflows
- Processed 10M+ daily records with type-safe SQL queries using Kysely
- Improved hiring velocity conducting 30+ technical interviews while building product

Intertru.ai
AI-assisted Hiring2023 - 2024
Interview Builder is where customers would go to define the values they wanted to find in their ideal candidate, and map those to attributes and ultimately interview questions that the intertru ai was pre-trained to assess.
My role was to work closely with the CTO to understand what was proven out on the ML side, so that we could deduce a UI that intuitively would extract the necessary inputs from the customer, while providing them with predefined templates as starting points to ease them into the process.
The application was built on react, typescript, graphql (backed by dynamodb) and amazon amplify, and I built it very quickly with simple backends so that we could iterate on the frontend, to get the experience right before investing significant time and effort into an ideal backend. This approach made iterations faster and produced less collateral damage / throwaway code as we refined the user experience.
We then added instrumentation so that we could measure the use of the feature, any bugs that might turn up, and its performance, before releasing it to production, where it was initially used internally to surface any shortcomings before customers were exposed to it.
The candidate summary page summarized a candidate's performance during multiple interview stages by presenting radar charts showing degree of fit against the values and attributes being evaluated for their position, as defined in the Interview Builder.
I built the frontend in React and Typescript, and integrated with the backend, which I partially built, which leveraged RAG and ran several Machine Learning models to produce scores and explainable AI. For example, models to break down interview transcripts into quotable fragments, evaluate relevance against configured company values, and call chatGPT APIs to obtain summaries and scores related to that content
Key Results
- Delivered MVP in 6 weeks enabling rapid iteration on customer interview workflows
- Built AI-powered candidate evaluation dashboard enabling data-driven hiring decisions
- Reduced time-to-create interview templates by 70% with intuitive UI design

Appen AI
Formerly Figure Eight2022 - 2023
Instead of splitting devops and infrastructure and tests completely separate from development teams, I moved the needle so that product development teams could own more of their own infrastructure and tests, creating less back-and-forth and empowering teams to deliver.
We used Devspace, which meant any dev or team could stand up a reproducible, isolated stack with multiple services and frontends running, in the cloud, as well as modify the definitions of the infrastructure and code themselves, directly, without permission or external team tickets.
This enabled product engineers to do more experimentation and testing thru declarative infrastructure and configuration management while still protecting our production environments, unlocking their shackles and potential as the experts in the software.
At the same time I worked to reduce the outsized role our amazing DevOps team was playing in the day to day management as well as enhancement of environments, which unfairly impeded expert developers by introducing red tape and inter-team processes that didn't add value.
Key Results
- Reduced deployment lead time by 75% enabling product teams to self-serve infrastructure
- Decreased inter-team ticket volume by ~60% through developer empowerment
- Enabled parallel development with isolated cloud environments for each developer

Sourceability
Electronic Component Parts Distributor2019 - 2020
My PM and the business wanted to illustrate to other teams that a fast-paced, fail-fast approach where we released daily (as opposed to 1-3 times per year) would serve us much better in that we could learn quickly, iterate and pivot, without huge costly investments into products that did not meet expectations or deadlines.
Before hiring my team, I set up a CICD pipeline and basic framework of a site that could sustain a heavy and intense crawl from google.
New hires all released to production on their first day of work - a principle I had brought to the table, that it should be so automated and simple that someone could set up and deploy a small feature within their first few hours of working at Sourceability.
Our parts and datasheets website, which also incorporated proprietary availability and quality scores, was used - within 3 months of inception - to successfully sell a 3 year Analytics API contract to an international multibillion dollar company, as well as driving organic traffic and learning how to scale to sustain google crawls of the hundreds of thousands of electronic component parts in our inventory while scaling down outside of the crawl / high-traffic moments.
- Full Stack - React, NodeJS, Typescript, Kubernetes, Gitlab
- Functional Reactive Programming - RxJS, highlandjs
- Daily Production Deploys - Canary Deployment w/ K8s
- Constant Collaboration - No “throwing over the wall”
- CI/CD Automation Pipeline - Every user story gets an instant shareable environment
- Coaching / Mentoring / Leading diverse team
Key Results
- Secured $3M analytics API contract within 3 months of product launch
- Achieved 400% increase in organic search index uptake thru SEO optimization
- Enabled team to deploy on day one reducing time-to-first-deploy from weeks to hours

Heartpoints.org
The Currency of Good2019 - 2023
A working prototype and specs for how heartpoints would be rewarded and exchanged and linked to "Proof of Good" that could be validated off-chain (since proof of good in this case may for example, be video evidence or other data that is too large to fit onto the chain), using a strategy of hashing the proof and storing the hash and URL of the proof's off-chain content.
Key Results
- Built blockchain-based "proof-of-good" currency prototype with off-chain validation
- Motivated a team of 5 to ideate and experiment on making the world a better place

MapR Technologies
Big Data / Hadoop Distributor2015 - 2018
A portal bringing together version control, automated test definitions and statuses, quality metrics, jira tickets, CICD jobs, and supportinginfrastructure definitions and status into a single place to aid in release management and devops practices.
Behind the scenes, pipelines made with K8s (Kubernetes), Mesos, Github and Jenkins automatically provisioned environments, deployed our software and ran extensive tests on it, including complex multi-cloud platform scale tests across Google Cloud and AWS as well as on prem with bare metal and Open Stack
Observability was introduced to MapR via the Spyglass Project, which sought to obtain metrics from workloads as well as application specific metrics across all the tools and infrastructure of the MapR Hadoop Stack.
My responsibilities included automating the build and deployment of the full hadoop stack under development, automated test authoring and execution, mentoringjunior teammates to do the same, collaborating with dev teams to ensure they plugged into our CI/CD and Test framework nicely, andtroubleshooting problems that arose.
Key Results
- Unified 5 disparate DevOps tools into single portal reducing context switching by 80%
- Implemented comprehensive observability across Hadoop stack monitoring 100+ metrics
- Automated multi-cloud testing across GCP, AWS, and on-prem reducing test setup time by 80%

Lookout
Mobile Security2014 - 2015
Led a series of workshops to teach Scala to various engineers at the company, including concepts like groups, monads, folds, lifts, pattern matching, case classes and higher kinded types.
Key Results
- Trained 10+ engineers in functional programming concepts increasing Scala adoption by 40%
- Created reusable workshop materials adopted by 3 additional engineering / qa teams