#Tools

35 posts

Committed a Secret to Git? Rotate the Key First, Then Clean History with filter-repo
6 min read

Committed a Secret to Git? Rotate the Key First, Then Clean History with filter-repo

A response procedure for the incident where an AWS key, an API token, or a .env file was committed and pushed. Priority one is not cleaning history but invalidating the key. We also cover rewriting history with filter-repo and the prevention tooling.

Getting Out of Git Detached HEAD — Causes and Recovering Commits
5 min read

Getting Out of Git Detached HEAD — Causes and Recovering Commits

What the "You are in detached HEAD state" warning actually means, explained through its structure, with an escape route for each situation. Includes how to keep commits made in this state by putting a branch on them.

Microsoft Graph in Practice #7: Operations — Throttling, Pagination, Delta Queries, Change Notifications
6 min read

Microsoft Graph in Practice #7: Operations — Throttling, Pagination, Delta Queries, Change Notifications

Raising Graph automation to operational grade: retries that honor 429 and Retry-After, the pagination (@odata.nextLink) that silently truncates data when missed, delta queries replacing polling (deltaLink state management), change notification subscriptions (validation handshake, renewal, lifecycleNotificationUrl), and JSON batching — closing the series.

Microsoft Graph in Practice #6: Teams — Reading Messages, and the Three Routes for Sending Notifications
6 min read

Microsoft Graph in Practice #6: Teams — Reading Messages, and the Three Routes for Sending Notifications

Facing the most famous wall in Graph's Teams integration head-on: reading teams, channels, and messages; why application permissions can't post to channels (migration-only), and the three alternative routes — a delegated automation account, Workflows incoming webhooks, and bots — with selection criteria.

Recovering Deleted Git Commits and Branches with reflog
5 min read

Recovering Deleted Git Commits and Branches with reflog

How to recover commits wiped by git reset --hard and branches deleted with -D, using the reflog. Covers what the reflog records, what it does not, and the cases where recovery is impossible.

Microsoft Graph in Practice #5: Files in OneDrive and SharePoint — Upload Sessions and Sharing
5 min read

Microsoft Graph in Practice #5: Files in OneDrive and SharePoint — Upload Sessions and Sharing

Automating files with Graph: the shared drive/driveItem model, the path differences between personal OneDrive and SharePoint site drives, downloads and simple uploads up to 250MB, upload sessions for large files (320KiB-multiple chunks, resume), creating sharing links, and narrowing permissions with Sites.Selected.

Practical Git Workflows #7: Monorepos and Git — sparse-checkout, Submodules, and LFS
8 min read

Practical Git Workflows #7: Monorepos and Git — sparse-checkout, Submodules, and LFS

Why Git slows down as a repository grows, and when to reach for partial clone, sparse-checkout, submodules, and Git LFS. The final part of the Practical Git Workflows series.

Microsoft Graph in Practice #4: Automating Mail and Calendar — Reading, Sending, Creating Events
5 min read

Microsoft Graph in Practice #4: Automating Mail and Calendar — Reading, Sending, Creating Events

Automating Outlook mail and calendar with Graph: inbox queries with filters, report delivery via sendMail and the cautions around bulk sending, attachments, creating meetings with invitations, availability lookups with getSchedule, and the classic trap of time zones — all in working code.

Practical Git Workflows #6: stash, cherry-pick, bisect — Everyday Tools
7 min read

Practical Git Workflows #6: stash, cherry-pick, bisect — Everyday Tools

stash to absorb urgent context switches, cherry-pick to move a single commit to another branch, and bisect to find the commit that introduced a bug by binary search. Three tools that are hard to do without at the moment you need them.

Microsoft Graph in Practice #3: First Calls with the Python SDK — Reading Users and Org Data
5 min read

Microsoft Graph in Practice #3: First Calls with the Python SDK — Reading Users and Org Data

Building the Python skeleton for calling Graph: installing msgraph-sdk and azure-identity, implementing both device code (delegated) and client credentials (application) clients, the async pattern, expressing OData queries in the SDK, listing users and profiles, and token-level auth debugging.

Practical Git Workflows #5: Running Pull Requests — Review Size, Commit Messages, and Draft PRs
8 min read

Practical Git Workflows #5: Running Pull Requests — Review Size, Commit Messages, and Draft PRs

Criteria for splitting PRs into reviewable sizes, the Conventional Commits convention, draft PRs and self-review, PR templates and branch protection. Running Pull Requests from the operations point of view.

Microsoft Graph in Practice #2: App Registration and Auth — Entra ID, Delegated vs. Application Permissions
6 min read

Microsoft Graph in Practice #2: App Registration and Auth — Entra ID, Delegated vs. Application Permissions

The whole structure of Graph authentication in working order: the Entra ID app registration procedure, the delegated/application distinction that shapes the entire series, admin consent, client secrets and certificates, least privilege, and secret management — the most important gateway in Graph.