## 1. Project Overview & Quickstart (crd/custom-resources)

# custom-resources

Open-source repository crd/custom-resources

### Repository Details
- **Repository:** [crd/custom-resources](https://github.com/crd/custom-resources)
- **Primary Language:** Code

*Note: High-volume repository documentation is actively indexed and synchronized by YakaAI.*

## 2. Official Technical Reference & Guides (crd/crd.github.io)

## File: README.md

# corydonnelly.com

Personal site + blog built with Jekyll using the Minimal Mistakes theme (remote theme starter).

- Repo: https://github.com/crd/crd.github.io
- Prod URL: https://corydonnelly.com
- Credits: Theme by Michael Rose (mmistakes/minimal-mistakes). Site started from the Minimal Mistakes remote theme starter.

## Configuration (quick)

- `_config.yml` controls site metadata, theme options, nav defaults, etc.
- Minimal Mistakes config guide: https://mmistakes.github.io/minimal-mistakes/docs/configuration/
- Custom domain is set via CNAME (repo root). Enforce HTTPS in Pages settings.
- GitHub Pages + Jekyll basics: https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll

## Prereqs

- Ruby (via rbenv or system) + Bundler.
- Clone the repo and install gems:

bundle install

## Local develop

bundle exec jekyll serve --livereload
# open http://127.0.0.1:4000

(Note) If you edit `_config.yml`, restart `jekyll serve`.

## Build & deploy

This repo is built and served by GitHub Pages. Push to the default branch to publish.

- GitHub Pages overview: https://pages.github.com/
- About GitHub Pages + Jekyll: https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/about-github-pages-and-jekyll
- Enforce HTTPS: https://docs.github.com/en/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https

## Dependencies (keeping current)

# update locked gems (respecting Gemfile constraints)
bundle update
# then test locally
bundle exec jekyll serve

Minimal Mistakes install/upgrade docs:
https://mmistakes.github.io/minimal-mistakes/docs/installation/

## Resume (single source + print-ready)

- Web page lives at: /_pages/resume.md
- Normalize newly extracted Markdown and ensure front matter:

# Normalize the current page in-place
./scripts/normalize-resume.sh

## Writing new articles

- Minimal Mistakes “Working with Posts”:
  https://mmistakes.github.io/minimal-mistakes/docs/posts/
- Jekyll posts basics:
  https://jekyllrb.com/docs/posts/
- Typical new post:

# create: _posts/2025-09-23-my-title.md
cat > _posts/2025-09-23-my-title.md <<'MD'
---
title: "My Title"
layout: single
author_profile: true
read_time: true
comments: false
---
Hello world.
MD

## Things to know

- /_data/navigation.yml controls the top nav (e.g., link to /resume/).
- /_includes/head/custom.html can load custom CSS (e.g., assets/css/print-resume.css).
- Restart `jekyll serve` after `_config.yml` changes (Jekyll doesn’t reload it live).
- Minimal Mistakes quick-start:
  https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/

---

## File: _config.yml

# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely edit after that. If you find
# yourself editing this file very often, consider using Jekyll's data files
# feature for the data you need to update frequently.
#
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.

# Site settings
# These are used to personalize your new site. If you look in the HTML files,
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
# You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}.
title: Cory Donnelly
email: cory.donnelly@gmail.com
  Cory Donnelly's profile
twitter_username: username
github_username: crd
minimal_mistakes_skin: dark
search: true

# https://dashboard.algolia.com/apps/5LOYKTDVJO/dashboard
algolia:
  application_id: '5LOYKTDVJO'
  index_name: corydonnelly.com

# Build settings
markdown: kramdown
remote_theme: mmistakes/minimal-mistakes
# Outputting
permalink: /:categories/:title/
paginate: 5 # amount of posts to show
paginate_path: /page:num/
timezone: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

include:
  - _pages

# Exclude from processing.
# The following items will not be processed, by default. Create a custom list
# to override the default setting.
# exclude:
#   - Gemfile
#   - Gemfile.lock
#   - node_modules
#   - vendor/bundle/
#   - vendor/cache/
#   - vendor/gems/
#   - vendor/ruby/

# Plugins (previously gems:)
plugins:
  - jekyll-paginate
  - jekyll-sitemap
  - jekyll-gist
  - jekyll-feed
  - jemoji
  - jekyll-include-cache

author:
  name   : "Cory Donnelly"
  avatar : "/assets/images/bio-photo.jpg"
  bio    : "Tinkerer."
  links:
    - label: "Website"
      icon: "fas fa-fw fa-link"
      url: "https://corydonnelly.com"
    - label: "GitHub"
      icon: "fab fa-fw fa-github"
      url: "https://github.com/crd"
    - label: "LinkedIn"
      icon: "fab fa-fw fa-linkedin"
      url: "https://www.linkedin.com/in/corydonnelly/"

    

footer:
  links:
    - label: "GitHub"
      icon: "fab fa-fw fa-github"
      url: "https://github.com/"
    - label: "LinkedIn"
      icon: "fab fa-fw fa-linkedin"
      url: "https://www.linkedin.com/in/corydonnelly/"

defaults:
  # _posts
  - scope:
      path: ""
      type: posts
    values:
      layout: single
      author_profile: true
      read_time: true
      comments: true
      share: true
      related: true
  # _pages
  - scope:
      path: "_pages"
      type: pages
    values:
      layout: single
      author_profile: true

category_archive:
  type: liquid
  path: /categories/
tag_archive:
  type: liquid
  path: /tags/

---

## File: _data/navigation.yml

main:
  - title: "Posts"
    url: /posts/
  - title: "Categories"
    url: /categories/
  - title: "Tags"
    url: /tags/
  - title: "Resume"
    url: /resume/

---

## File: _pages/404.md

---
title: "Page Not Found"
excerpt: "Page not found. Your pixels are in another canvas."
sitemap: false
permalink: /404.html
---

Sorry, but the page you were trying to view does not exist.

---

## File: _pages/category-archive.md

---
title: "Posts by Category"
layout: categories
permalink: /categories/
author_profile: true
---

---

## File: _pages/resume.md

---
title: "Resume"
layout: single
permalink: /resume/
author_profile: false
toc: false
classes: wide
---


  <a href="{{ '/assets/resume/Cory Donnelly.pdf' | relative_url }}" download>
    Download (PDF)</a>


**Cory Donnelly**  
Buffalo, New York  
(716) 512-8795  
cory.donnelly@gmail.com | [https://linkedin.com/in/corydonnelly](https://linkedin.com/in/corydonnelly)

#### **Summary of Qualifications**

Transformational Technology Executive with a proven record of building high-performing engineering organizations, modernizing enterprise platforms, and delivering at scale for millions of customers. Expert in leading large cross-functional teams and multimillion-dollar budgets to drive innovation, resiliency, and cloud-native transformation. Recognized for SDLC excellence, developer enablement, quality engineering, API governance and strategy, digital conversions, cloud migration strategy, and open source strategy. Demonstrates a strong commitment to cultivating engineering culture, advancing STEM education, and driving community impact as a founder of Capital One Coders (29k+ students, 150+ school/nonprofit partners, 130k+ volunteer hours).

**Functional Areas of Expertise:**  
Strategic Vision & Organizational Design | Distributed Systems | Continuous Improvement | Engineering Excellence & SDLC Transformation | Cloud-Native Architecture & Modernization | Open Source Governance | Talent Development & High-Performance Culture | Cross-Functional Leadership & Stakeholder Alignment | Risk Management & Compliance | Developer Experience (DevEx), Developer Enablement, & Developer Productivity | Platform Engineering | Digital Conversions & Customer Experience | Community Impact & STEM Advocacy

#### **Professional Experience**

M&T Bank										July 2019 — October 2025

**Senior Vice President, Engineering Director of Engineering Excellence** (December 2024 — October 2025)  
Built and led the bank's Engineering Excellence organization, driving transformation across the system & Software Development Life Cycle (SDLC), developer experience, developer enablement, quality engineering, API governance and strategy, and Open Source strategy. Established enterprise policies and standards, modernized software development practices, improved reliability, and accelerated delivery for ~4 million customers while ensuring audit and regulatory compliance. Led retail and business banking cloud migration strategy (500+ apps).

* Designed and implemented a "Path to Production" framework that formalized and streamlined the SDLC from ideation through deployment, making the compliant route the fastest and most efficient.  
* Improved developer experience,  productivity, and consistency by integrating and standardizing GitLab, Jira, and Artifactory tooling, and introducing DORA/SPACE metrics and AI development assistance.  
* Elevated software quality and reliability by establishing an enterprise-wide Quality Engineering function, advancing test automation, performance testing, and secure test data management practices.  
* Instituted API governance and strategy, API marketplace, catalog, and development best practices.  
* Strengthened risk management and controls by addressing SDLC and customer data handling gaps.

**Senior Vice President, Engineering Director of Digital Technology** (May 2021 — December 2024)  
Owned and led Mobile and Online Banking platforms, supporting ~4 million customers and driving digital adoption with more than 75% active users within 90 days. Directed a 120-person engineering team and a mid-eight-figure annual budget, while also leading large-scale, cross-functional initiatives to modernize core digital capabilities, strengthen resiliency, and prepare the technology stack for cloud migration.

* Oversaw Digital Tech's first-ever digital conversion during the People's United Bank acquisition, migrating tens of millions of customer records (user credentials, transaction histories, bill payments, payees, etc.)  
* Guided Digital Tech teams through a significant maturation journey, achieving a **157%** throughput increase and **98%** improvement in predictability in 2024.  
* Co-built and led a cross-functional modernization-focused Solution Train of 15 ARTs, 300+ engineers and stakeholders, executing a multi-year modernization push of retail and business banking tech stacks; drove operating rigor (OKRs, operating routines, governance) that increased Solution-wide throughput by **30%**, with feature completion rising **Q1 28% → Q2 45% → Q3 72% → Q4 87%** in 2024.  
* Resolved high-severity enterprise cryptographic controls findings by aligning Tech Risk, Audit, Compliance, and senior business and tech leadership with zero disruption to delivery.* Launched an end-to-end testing framework adopted Solution-wide for consistency and auditability.  
* Led efforts to upgrade critical customer-facing infrastructure, removing critical-path obsolescence risk and de-risking larger modernization initiatives.  
* Drove tech modernization and resiliency improvements, enabling cloud readiness and ensuring scalability of digital platforms for future growth.

**Vice President, Director of Engineering** (July 2019 — May 2021)  
Built and led a distributed, high-performing engineering organization for M&T Bank's first cloud-native incubated start-up, Nota. Scaled the team and operating model to take the customer-facing application from initial prototype to production, unlocking a new customer segment and revenue stream.

Capital One										April 2011 — July 2019

**Senior Manager** (January 2018 — July 2019)  
Led multiple teams at Capital One focused on innovation and modernization of cloud-based customer-facing platforms for consumer and small business credit card accounts. Oversaw product development, operational service delivery, and platform management of several critical systems using Agile methodologies, while driving enterprise adoption of cloud-native technologies to improve scalability, efficiency, and customer experience.

* Coordinated a large-scale, cross-organizational effort to convert millions of tokenized customer tax IDs across 35 platforms, mitigating AWS Hardware Security Module (HSM) end-of-life risks and ensuring seamless continuity for our customers.  
* Cut Customer Identity Verification infrastructure spend by **98%** by implementing an on-demand, serverless architecture.

**Master Software Engineer, Manager** (August 2014 — January 2018)  
Led multiple teams to transform software engineering practices and modernize legacy infrastructure in support of the credit card business. Ran business critical customer-facing platforms for risk modeling and scoring, loan decisioning, and line assignment, ensuring reliable delivery against business objectives. Also co-founded and scaled a flagship community outreach initiative to expand access to STEM education.

* Co-founded and scaled [Capital One Coders](https://www.capitalone.com/coders/), an engineer-led, 10-week middle-school program, reaching 29,000+ students across 13 communities with 150+ school/nonprofit partners and 130,000+ volunteer hours; co-designed MIT App Inventor curriculum and operating model; 90% of programming serves low-to-moderate-income communities.

**Senior Software Engineer, Principal Associate** (April 2011 — August 2014)  
Provided technical leadership for Capital One's flagship credit card application capture platform ICORE, guiding a rapid-cycle development team of onshore and offshore developers, business analysts, and testers. Ensured delivery of high-quality solutions that optimized the customer application experience while improving speed to market, efficiency, and reliability.

#### **Education/Certifications**

University of Toronto  
**Honours Bachelor of Science, Computer Science and Physics**

**AWS Certified Solutions Architect - Associate,** Amazon Web Services  
**Microsoft Azure Fundamentals AZ-900,** Microsoft Azure  
**ICAgile Certified Professional in Agile Team Facilitation (ICP-ATF),** ICAgile

#### **Awards and Community Support**

**2020 Buffalo Emerging Technology Awards Showcase,** Judge  
**2017 CodeRVA High School Advisory Council,** Business Advisory Member  
**2016 Richtech Gala People's Choice Award,** Capital One Coders, Richmond Technology Council  
**Python Software Foundation,** Contributing Member

---

## File: _pages/tag-archive.md

---
title: "Posts by Tag"
permalink: /tags/
layout: tags
author_profile: true
---

---

## File: _pages/year-archive.md

---
title: "Posts by Year"
permalink: /posts/
layout: posts
author_profile: true
---

---

## File: _posts/2024-11-29-intro-to-logseq.md

---
title: "Exploring Logseq"
date: 2024-11-29T07:35:00-04:00
categories:
  - logseq
tags:
  - logseq
---

I'm a big fan of plaintext -- it's portable, searchable, and there's no risk of vendor lock-in -- and Markdown has been my preferred note-taking markup language for years. I've historically relied on a filesystem-based hierarchical organizational mechanism which was adequate but not spectacular. Recently I came across [Logseq][logseq-site] and was delighted to see it checked all the boxes:

- opensource
- locally-hosted
- plaintext

[logseq-site]: https://logseq.com

---

## File: _posts/2025-01-06-first-thoughts-on-tach.md

---
title: "First Thoughts on Tach"
date: 2025-01-05T09:36:00-04:00
categories:
  - python
tags:
  - python
  - tach
  - dependency management
---

Note: As of 2025-06-03, Tach is no longer being maintained. There's a user fork named [dtach][tach-fork-site] that is seeing some activity but I'm unsure of its future.

### First Thoughts on Tach: A New Tool for Python Dependency Management



*"Python Environment" by [xkcd](https://xkcd.com/1987/)*

**Understanding Tach**

[Tach][tach-site] is an open-source tool designed to enforce dependencies within Python projects. Built with a modular architecture, it allows developers to define explicit module boundaries and automatically detects cross-module dependencies, ensuring that only permitted interactions occur within a codebase. Tach operates during the development phase, so it has no impact on runtime performance.



*Output of `tach show`* [tach][tach-site]

**Key Features of Tach:**

- **Modular Architecture:** Developers can define and enforce dependencies between Python modules, supporting a modular monolithic architecture.
- **Incremental Adoption:** Teams can adopt Tach gradually, applying it to specific parts of the codebase as needed.
- **No Runtime Impact:** Dependency enforcement happens during development, ensuring runtime performance remains unaffected.
- **Interoperability:** Tach integrates with command-line interfaces, hooks, and continuous integration pipelines.

**Tach in the Context of Existing Tools**

Traditional Python dependency management and packaging tools like [pipenv][pipenv-site] or [poetry][poetry-site] manage external package dependencies and virtual environments. These tools, while essential for handling third-party packages, do not enforce internal module boundaries within a project. Tach fills this gap by enforcing strict interfaces and dependencies between internal modules, complementing existing tools.

**Potential Integration Scenarios:**

- **With pip:** Pip manages external packages, while Tach enforces internal module dependencies, ensuring the codebase adheres to defined architectural boundaries.
- **With pipenv or poetry:** These tools manage virtual environments and external dependencies. Integrating Tach adds internal dependency enforcement, providing a comprehensive dependency management strategy.
- **In Monorepos:** For large codebases or monorepos, Tach enforces dependencies between different projects or modules, maintaining separation and preventing unintended interactions.

**Wrapping Up**

Tach offers a new approach to Python dependency management by focusing on internal module dependencies. Its ability to enforce strict interfaces and promote modular architecture makes it a valuable addition to the Python developer's toolkit. I'm hoping that emerging tools like Tach will lead to a more robust and maintainable codebase, effectively managing both external and internal dependencies.

For more information visit the official [tach][tach-site] GitHub repository.

[tach-fork-site]: https://detachhead.github.io/dtach/
[tach-site]: https://github.com/gauge-sh/tach
[pipenv-site]: https://pipenv.pypa.io
[poetry-site]: https://python-poetry.org/

---

## File: _posts/2025-10-23-mixed-opinions-on-team-topologies.md

---
title: "Mixed Opinions on Team Topologies"
date: 2025-01-05T09:36:00-04:00
categories:
  - books
tags:
  - python
  - tach
  - dependency management
excerpt_separator: 
---

I just reread Team Topologies (bought the new 2nd edition after misplacing my copy) and I have the same mixed reaction: I strongly agree with two foundational points and strongly disagree with two others and I'm curious if I'm the outlier. 


I'll try to present the book's perspective neutrally up front and add some commentary afterward.

### Cognitive Load

- Team cognitive load matters. Slice up the work so each team owns a small, coherent slice of the system that fits its cognitive capacity and consider the total cumulative cognitive load on a team before pushing more work their way. Use dedicated teams for complicated subsystems so stream-aligned teams are not overloaded.

## Unnecessary Conversation

- Not all communication is good. Make communication intentional with clear team interfaces and explicit interaction modes (collaboration, x-as-a-service, facilitating) so attention stays focused and handoffs are minimized. If necessary, physically move teams to discourage or restrict "unnecessary communication". 

## Organizing Teams to Drive a Desired Architecture (aka the "Inverse Conway Maneuver")

- Reorganizing teams (applying the "Inverse Conway Maneuver") to redefine team boundaries and communication paths will encourage the creation of a system that aligns with the desired architecture.

## Individual vs. Team-Level Incentives

- Teams are the smallest unit of delivery and reward. Organizations that manage by objective with "Performance Management" cultures that use individual performance ratings and merit bonuses create unhealthy environments and result in worse outcomes than team-level incentives 



[team-topologies-site]: https://github.com/gauge-sh/tach
[pipenv-site]: https://pipenv.pypa.io
[poetry-site]: https://python-poetry.org/