# About Jeppe Spanggaard

- Date: 2026-07-26
- Author: Jeppe Spanggaard
- Description: Danish software developer and co-founder of Pinksky, writing about C#/.NET, Azure, Microsoft Graph and SharePoint from real projects.
- URL: https://jeppe-spanggaard.dk/about/


I'm a Danish software developer, based in Midtjylland. I spend most of my working life inside the Microsoft 365 stack: C# and .NET on the backend, Azure Functions doing the unglamorous work, and Microsoft Graph, SharePoint and CSOM being difficult about it.

I've been paid to write software since 2018. First in-house, where you own what you ship for years afterwards and learn to care about operations, then in product teams, and for the last few years specialising in Microsoft 365 and SharePoint. I'm now a co-founder of [Pinksky](https://pinksky.dk), where I build the kind of software that has to keep working on a Monday morning in somebody else's tenant.

That order matters to how I work. Starting in-house means I think about the business before the code: what the company actually does, which problem is worth solving, and whether the thing will still make sense in five years. My training is a datamatiker degree from Erhvervsakademi MidtVest, but most of what's on this blog I learned from production.

## Why This Blog Exists

Every post here started as a problem I actually hit. Not a tutorial topic I picked because it gets traffic. Something broke, or cost too much, or worked on my machine and nowhere else, and I had to go and find out why.

That's a deliberate choice, because it's the gap I kept falling into myself. Microsoft Learn will tell you what an API does. It rarely tells you what happens when you call it 90,000 times a month, or that the documented behaviour changes on mobile, or that the thing you're about to build has a quota you'll discover in production. That part usually lives in a GitHub issue somebody opened years ago and nobody answered.

So I write it down. What I tried, what the numbers were before and after, and where I was wrong. Some of these posts correct code I published here earlier. I'd rather do that than pretend I got it right the first time.

A note on the writing: I write these posts in Danish and use AI to help with the English. The code, the measurements, and the mistakes are all mine.

## What I Write About

The clusters that have grown deepest, roughly in order:

- **SharePoint CSOM performance.** Batching, CAML joins, change detection and ExceptionHandlingScope. How to stop a provisioning job from making tens of thousands of API calls it didn't need to make, and what those calls cost you.
- **Microsoft Graph in C#.** Batching and mapping responses back to requests, throttling and retry logic that isn't just "retry everything", rich notifications, and the parts of the SDK the docs skip.
- **Azure Functions for Microsoft 365.** Durable Functions for provisioning, idempotency, deterministic instance IDs, and telling a permanent failure apart from a transient one before you retry it forty times.
- **Outlook add-ins on mobile.** Requirement sets that lie, Nested App Auth, and what to do when there's no popup because there's no window.
- **Azure Event Grid.** Partner topics for Graph mail events, dead-lettering, and alerting on the dead letters when the portal won't help.

## Open Source

I contribute back to the libraries I use, mostly when I hit something missing and end up writing it anyway. The list below is generated from GitHub rather than typed by hand, so it stays honest about what's open and what isn't.

{{< oss-prs >}}

## On the Community Calls

I've demoed twice on the Microsoft 365 & Power Platform community calls, which is the closest thing this niche has to a town square:

- **[CSOM Performance: Fast Taxonomy Loading for SharePoint List Items with Many Terms](https://pnp.github.io/blog/weekly-agenda/26-01-26/)** on the community demos call in January 2026. The undocumented approach behind [this post](/blogs/csom-taxonomy-performance-optimization/), demoed live.
- **[Guest User Overview](https://pnp.github.io/blog/weekly-agenda/23-09-04/)** on the weekly call in September 2023, built for HackTogether: Microsoft Teams Global Hack, where it won the Productivity category.

## Badges From the Community

These come from the Microsoft 365 & Power Platform Community, mostly for sample contributions and the Teams hack. They're not certifications and I won't pretend they are, but they're verifiable, and they mark the things I've actually shown up for. Each one links to its Credly verification page.

{{< credly-badges >}}

## What I Help With

If you're reading a post here because you have the same problem, this is the short version of what I do for a living:

- **Microsoft 365 API performance and cost.** When a SharePoint or Graph integration is slow, throttled, or billing more than anyone budgeted for, finding out why is most of what I do.
- **Provisioning that survives contact with reality.** Durable Functions, PnP templates, and the eventual consistency you only notice at scale.
- **Add-ins and integrations that work on every client**, including the mobile ones where half the documented API surface quietly isn't there.

## Get in Touch

Email is best: [jeppespanggaard11@gmail.com](mailto:jeppespanggaard11@gmail.com).

I'm also on [GitHub](https://github.com/jeppesc11) and [LinkedIn](https://www.linkedin.com/in/jeppe-spanggaard/). If a post here saved you an afternoon, I'd genuinely like to hear which one.

