#Tools
35 posts
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
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
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
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
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
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
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
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
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
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
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
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.