Martin Folmer
@martinfolmer.bsky.social
📍Aarhus, Denmark
Building Apigaze.com (website pending...), simple, easy-to-use API monitoring and analytics for people who’d rather be shipping than fiddling around with configurations and dashboards.
Full-time hype man 🎯
Building Apigaze.com (website pending...), simple, easy-to-use API monitoring and analytics for people who’d rather be shipping than fiddling around with configurations and dashboards.
Full-time hype man 🎯
Absolutely loved this talk between @aaronfrancis.com and Heikki Linnakangas.
I get drawn in by these kinds of deep dives.
Watching someone with 20+ years in Postgres talk about their craft and the work that goes into a piece of software like Postgres and Neon.
It's truly inspiring.
#postgres
I get drawn in by these kinds of deep dives.
Watching someone with 20+ years in Postgres talk about their craft and the work that goes into a piece of software like Postgres and Neon.
It's truly inspiring.
#postgres
20 years of hacking Postgres with Heikki Linnakangas (cofounder of Neon)
YouTube video by Aaron Francis
www.youtube.com
May 7, 2025 at 3:01 PM
Absolutely loved this talk between @aaronfrancis.com and Heikki Linnakangas.
I get drawn in by these kinds of deep dives.
Watching someone with 20+ years in Postgres talk about their craft and the work that goes into a piece of software like Postgres and Neon.
It's truly inspiring.
#postgres
I get drawn in by these kinds of deep dives.
Watching someone with 20+ years in Postgres talk about their craft and the work that goes into a piece of software like Postgres and Neon.
It's truly inspiring.
#postgres
To make developers’ lives easier and ensure a great DX, I’m building ApiGaze SDKs for popular API/web frameworks.
To setup ApiGaze:
1. Install the SDK
2. Add two lines of code
Also, the SDKs will be open-sourced to ensure full transparency about what’s being collected
#opensource #buildinpublic
To setup ApiGaze:
1. Install the SDK
2. Add two lines of code
Also, the SDKs will be open-sourced to ensure full transparency about what’s being collected
#opensource #buildinpublic
May 6, 2025 at 8:03 PM
To make developers’ lives easier and ensure a great DX, I’m building ApiGaze SDKs for popular API/web frameworks.
To setup ApiGaze:
1. Install the SDK
2. Add two lines of code
Also, the SDKs will be open-sourced to ensure full transparency about what’s being collected
#opensource #buildinpublic
To setup ApiGaze:
1. Install the SDK
2. Add two lines of code
Also, the SDKs will be open-sourced to ensure full transparency about what’s being collected
#opensource #buildinpublic
Alright! After a few hours of setup I think I got a solid starting point.
Hetzner server running everything for now
GH actions to build docker image and publish to ghcr
Dokploy on the server connected to ghcr, one click deploy
Dare I say...it almost feels like a "real" cloud provider😀
#dokploy
Hetzner server running everything for now
GH actions to build docker image and publish to ghcr
Dokploy on the server connected to ghcr, one click deploy
Dare I say...it almost feels like a "real" cloud provider😀
#dokploy
May 1, 2025 at 3:30 PM
Alright! After a few hours of setup I think I got a solid starting point.
Hetzner server running everything for now
GH actions to build docker image and publish to ghcr
Dokploy on the server connected to ghcr, one click deploy
Dare I say...it almost feels like a "real" cloud provider😀
#dokploy
Hetzner server running everything for now
GH actions to build docker image and publish to ghcr
Dokploy on the server connected to ghcr, one click deploy
Dare I say...it almost feels like a "real" cloud provider😀
#dokploy
The power is gone?!
Meaning no internet, no using the desktop pc..
I don't even know what to do then...a little crazy to think about how dependent we are.
Well I'll just wait for the food in the fridge to go bad then 😂
Meaning no internet, no using the desktop pc..
I don't even know what to do then...a little crazy to think about how dependent we are.
Well I'll just wait for the food in the fridge to go bad then 😂
May 1, 2025 at 8:21 AM
The power is gone?!
Meaning no internet, no using the desktop pc..
I don't even know what to do then...a little crazy to think about how dependent we are.
Well I'll just wait for the food in the fridge to go bad then 😂
Meaning no internet, no using the desktop pc..
I don't even know what to do then...a little crazy to think about how dependent we are.
Well I'll just wait for the food in the fridge to go bad then 😂
Deploying some services to Hetzner.
Previously used Portainer for mangement UI.
Seems like Dokploy and Coolify is the new cool kids in town?
Or is this a case of shiny object syndrome?
#buildinpublic
Previously used Portainer for mangement UI.
Seems like Dokploy and Coolify is the new cool kids in town?
Or is this a case of shiny object syndrome?
#buildinpublic
April 30, 2025 at 11:37 AM
Deploying some services to Hetzner.
Previously used Portainer for mangement UI.
Seems like Dokploy and Coolify is the new cool kids in town?
Or is this a case of shiny object syndrome?
#buildinpublic
Previously used Portainer for mangement UI.
Seems like Dokploy and Coolify is the new cool kids in town?
Or is this a case of shiny object syndrome?
#buildinpublic
Apigaze absolutely isn't an alternative to Honeycomb, Datadog, Azure monitor, Grafana etc
It's an alternative for std out
Inspect error rate, latency, performance, exceptions, data in/out. In a simple manner.
Without using days instrumenting your API and building custom dashboards👈
#buildinpublic
It's an alternative for std out
Inspect error rate, latency, performance, exceptions, data in/out. In a simple manner.
Without using days instrumenting your API and building custom dashboards👈
#buildinpublic
I'm building the simplest API monitoring tool.
I'm scratching my own itch here. I've been missing a simple opinionated tool for this.
No complex setup, no steep leaning curve.
Add 1-2 lines of code and get insights.
Think @plausible.io for API monitoring.
#buildinpublic #dev
I'm scratching my own itch here. I've been missing a simple opinionated tool for this.
No complex setup, no steep leaning curve.
Add 1-2 lines of code and get insights.
Think @plausible.io for API monitoring.
#buildinpublic #dev
April 29, 2025 at 9:28 AM
Apigaze absolutely isn't an alternative to Honeycomb, Datadog, Azure monitor, Grafana etc
It's an alternative for std out
Inspect error rate, latency, performance, exceptions, data in/out. In a simple manner.
Without using days instrumenting your API and building custom dashboards👈
#buildinpublic
It's an alternative for std out
Inspect error rate, latency, performance, exceptions, data in/out. In a simple manner.
Without using days instrumenting your API and building custom dashboards👈
#buildinpublic
I'm building the simplest API monitoring tool.
I'm scratching my own itch here. I've been missing a simple opinionated tool for this.
No complex setup, no steep leaning curve.
Add 1-2 lines of code and get insights.
Think @plausible.io for API monitoring.
#buildinpublic #dev
I'm scratching my own itch here. I've been missing a simple opinionated tool for this.
No complex setup, no steep leaning curve.
Add 1-2 lines of code and get insights.
Think @plausible.io for API monitoring.
#buildinpublic #dev
April 28, 2025 at 12:33 PM
I'm building the simplest API monitoring tool.
I'm scratching my own itch here. I've been missing a simple opinionated tool for this.
No complex setup, no steep leaning curve.
Add 1-2 lines of code and get insights.
Think @plausible.io for API monitoring.
#buildinpublic #dev
I'm scratching my own itch here. I've been missing a simple opinionated tool for this.
No complex setup, no steep leaning curve.
Add 1-2 lines of code and get insights.
Think @plausible.io for API monitoring.
#buildinpublic #dev
I know people say you should build in public on X - I've contemplated to do it, but ultimately refused the idea...just dosen't feel right.
I'm definitely going to build in public but it isn't going to be on X.
Anyone doing it on LinkedIn?
#buildinpublic #dev
I'm definitely going to build in public but it isn't going to be on X.
Anyone doing it on LinkedIn?
#buildinpublic #dev
April 28, 2025 at 12:03 PM
I know people say you should build in public on X - I've contemplated to do it, but ultimately refused the idea...just dosen't feel right.
I'm definitely going to build in public but it isn't going to be on X.
Anyone doing it on LinkedIn?
#buildinpublic #dev
I'm definitely going to build in public but it isn't going to be on X.
Anyone doing it on LinkedIn?
#buildinpublic #dev
What's a good way to calc bucket size based on time window
| Window Size (min) | Bucket Size (min) |
| <= 30 | 1 min
| <= 120 | 2 min
| <= 180 | 5 min
....
Any nice approach?
FYI I'll be plotting each bucket in a bar chart
#data
| Window Size (min) | Bucket Size (min) |
| <= 30 | 1 min
| <= 120 | 2 min
| <= 180 | 5 min
....
Any nice approach?
FYI I'll be plotting each bucket in a bar chart
#data
March 17, 2025 at 3:25 PM
What's a good way to calc bucket size based on time window
| Window Size (min) | Bucket Size (min) |
| <= 30 | 1 min
| <= 120 | 2 min
| <= 180 | 5 min
....
Any nice approach?
FYI I'll be plotting each bucket in a bar chart
#data
| Window Size (min) | Bucket Size (min) |
| <= 30 | 1 min
| <= 120 | 2 min
| <= 180 | 5 min
....
Any nice approach?
FYI I'll be plotting each bucket in a bar chart
#data
That well quite smooth.
Getting the exact number of request with a status code in a time window seems cool.
This data will be used for plotting.
Filter by env and period available.
#dotnet #buildinpublic #api #telemetry
Getting the exact number of request with a status code in a time window seems cool.
This data will be used for plotting.
Filter by env and period available.
#dotnet #buildinpublic #api #telemetry
March 17, 2025 at 3:21 PM
That well quite smooth.
Getting the exact number of request with a status code in a time window seems cool.
This data will be used for plotting.
Filter by env and period available.
#dotnet #buildinpublic #api #telemetry
Getting the exact number of request with a status code in a time window seems cool.
This data will be used for plotting.
Filter by env and period available.
#dotnet #buildinpublic #api #telemetry
Getting the first API endpoints in place
The first is traffics core metrics.
Nice to be able to get these for arbitrary periods (1h, 1h15m, 6hour, etc) and for specific env
Considering adding filters for specific endpoints or http verbs.
Next is bucketing.
#dotnet #api #analytics #buildinpublic
The first is traffics core metrics.
Nice to be able to get these for arbitrary periods (1h, 1h15m, 6hour, etc) and for specific env
Considering adding filters for specific endpoints or http verbs.
Next is bucketing.
#dotnet #api #analytics #buildinpublic
March 17, 2025 at 1:41 PM
Getting the first API endpoints in place
The first is traffics core metrics.
Nice to be able to get these for arbitrary periods (1h, 1h15m, 6hour, etc) and for specific env
Considering adding filters for specific endpoints or http verbs.
Next is bucketing.
#dotnet #api #analytics #buildinpublic
The first is traffics core metrics.
Nice to be able to get these for arbitrary periods (1h, 1h15m, 6hour, etc) and for specific env
Considering adding filters for specific endpoints or http verbs.
Next is bucketing.
#dotnet #api #analytics #buildinpublic
Not saying that you should NEVER write your queries yourself - but in my opinion you need a very good reason to do so.
A there is a lot of good reasons - but don't be the 'we-should-always-write-them-by-hand' just because kind of guy. 😃
#dotnet #efcore
A there is a lot of good reasons - but don't be the 'we-should-always-write-them-by-hand' just because kind of guy. 😃
#dotnet #efcore
Unpopular (biased) opinion.
EF core should be your default
Seems to be a lot of hate towards EF. But let's be honest - it writes better SQL than most of us.
The work done on the performance of EF Core makes it a no-brainer
Maintained a lot of manual written queries, no thanks in most cases.
EF core should be your default
Seems to be a lot of hate towards EF. But let's be honest - it writes better SQL than most of us.
The work done on the performance of EF Core makes it a no-brainer
Maintained a lot of manual written queries, no thanks in most cases.
March 15, 2025 at 10:40 AM
Unpopular (biased) opinion.
EF core should be your default
Seems to be a lot of hate towards EF. But let's be honest - it writes better SQL than most of us.
The work done on the performance of EF Core makes it a no-brainer
Maintained a lot of manual written queries, no thanks in most cases.
EF core should be your default
Seems to be a lot of hate towards EF. But let's be honest - it writes better SQL than most of us.
The work done on the performance of EF Core makes it a no-brainer
Maintained a lot of manual written queries, no thanks in most cases.
March 15, 2025 at 10:37 AM
Unpopular (biased) opinion.
EF core should be your default
Seems to be a lot of hate towards EF. But let's be honest - it writes better SQL than most of us.
The work done on the performance of EF Core makes it a no-brainer
Maintained a lot of manual written queries, no thanks in most cases.
EF core should be your default
Seems to be a lot of hate towards EF. But let's be honest - it writes better SQL than most of us.
The work done on the performance of EF Core makes it a no-brainer
Maintained a lot of manual written queries, no thanks in most cases.
Got the middleware and sink in place for my simple API monitoring and insights solution.
Now building the ingestion API.
End goal: insights into traffic, performance, errors, and maybe in/out going payload and headers. Without configuration nightmare.
#dotnet #buildinpublic #api
Now building the ingestion API.
End goal: insights into traffic, performance, errors, and maybe in/out going payload and headers. Without configuration nightmare.
#dotnet #buildinpublic #api
March 14, 2025 at 2:34 PM
Got the middleware and sink in place for my simple API monitoring and insights solution.
Now building the ingestion API.
End goal: insights into traffic, performance, errors, and maybe in/out going payload and headers. Without configuration nightmare.
#dotnet #buildinpublic #api
Now building the ingestion API.
End goal: insights into traffic, performance, errors, and maybe in/out going payload and headers. Without configuration nightmare.
#dotnet #buildinpublic #api
The ultimate goal is that is shouldn't require no more that a few lines of code to setup and you'll get traffic, performance, errors, and maybe in/out going payload and headers.
Still need to work out how/what to redact to keep privacy.
#buildinpublic #dotnet #api #analytics
Still need to work out how/what to redact to keep privacy.
#buildinpublic #dotnet #api #analytics
March 13, 2025 at 12:25 PM
The ultimate goal is that is shouldn't require no more that a few lines of code to setup and you'll get traffic, performance, errors, and maybe in/out going payload and headers.
Still need to work out how/what to redact to keep privacy.
#buildinpublic #dotnet #api #analytics
Still need to work out how/what to redact to keep privacy.
#buildinpublic #dotnet #api #analytics
Going to build a simple solution for my use case.
Thinking along the lines of a simple middleware with a message sink periodically sending telemetry data to my API.
Then going to build a web app to view, filter, etc these telemetry data.
Is build in public a thing here?
#buildinpublic #dotnet
Thinking along the lines of a simple middleware with a message sink periodically sending telemetry data to my API.
Then going to build a web app to view, filter, etc these telemetry data.
Is build in public a thing here?
#buildinpublic #dotnet
March 13, 2025 at 9:24 AM
Going to build a simple solution for my use case.
Thinking along the lines of a simple middleware with a message sink periodically sending telemetry data to my API.
Then going to build a web app to view, filter, etc these telemetry data.
Is build in public a thing here?
#buildinpublic #dotnet
Thinking along the lines of a simple middleware with a message sink periodically sending telemetry data to my API.
Then going to build a web app to view, filter, etc these telemetry data.
Is build in public a thing here?
#buildinpublic #dotnet
In #dotnet land what are options for simple API analytics + monitoring?
Not talking about fully fledged Prometheus+Grafana, Datadog, Sentry, Azure Monitor etc. - these are too complex to start with.
I'm talking simple traffic, errors, performance, request log stuff? With a simple dashboard
#dotnet
Not talking about fully fledged Prometheus+Grafana, Datadog, Sentry, Azure Monitor etc. - these are too complex to start with.
I'm talking simple traffic, errors, performance, request log stuff? With a simple dashboard
#dotnet
March 11, 2025 at 8:22 AM
I've built so many integrations over the years. It seems to be the same every time:
- Retries
- Timeout
- Transformation
- Auth
- Error handling
- Alerting
- Observability
- Push/pull flows
I'm might build a 'platform' to handle all this.
What are existing solutions?
#dev #buildinpublic
- Retries
- Timeout
- Transformation
- Auth
- Error handling
- Alerting
- Observability
- Push/pull flows
I'm might build a 'platform' to handle all this.
What are existing solutions?
#dev #buildinpublic
January 2, 2025 at 10:39 AM
I've built so many integrations over the years. It seems to be the same every time:
- Retries
- Timeout
- Transformation
- Auth
- Error handling
- Alerting
- Observability
- Push/pull flows
I'm might build a 'platform' to handle all this.
What are existing solutions?
#dev #buildinpublic
- Retries
- Timeout
- Transformation
- Auth
- Error handling
- Alerting
- Observability
- Push/pull flows
I'm might build a 'platform' to handle all this.
What are existing solutions?
#dev #buildinpublic
For anyone interested - I can really recommend @martindotnet.bsky.social talk on 'Practical OpenTelemetry for .NET'.
Great introduction and overview!
www.youtube.com/watch?v=tcta...
Great introduction and overview!
www.youtube.com/watch?v=tcta...
December 19, 2024 at 9:08 PM
For anyone interested - I can really recommend @martindotnet.bsky.social talk on 'Practical OpenTelemetry for .NET'.
Great introduction and overview!
www.youtube.com/watch?v=tcta...
Great introduction and overview!
www.youtube.com/watch?v=tcta...
Haven't had the time to play around with Aspire yet.
But tried the dashboard in standalone mode for app monitoring and inspection. And I must say this is awesome - so easy to get started and understand!
This will be a integrated part from now on!
#dotnet #aspire #opentelemetry #dev
But tried the dashboard in standalone mode for app monitoring and inspection. And I must say this is awesome - so easy to get started and understand!
This will be a integrated part from now on!
#dotnet #aspire #opentelemetry #dev
December 19, 2024 at 8:58 PM
Haven't had the time to play around with Aspire yet.
But tried the dashboard in standalone mode for app monitoring and inspection. And I must say this is awesome - so easy to get started and understand!
This will be a integrated part from now on!
#dotnet #aspire #opentelemetry #dev
But tried the dashboard in standalone mode for app monitoring and inspection. And I must say this is awesome - so easy to get started and understand!
This will be a integrated part from now on!
#dotnet #aspire #opentelemetry #dev
Using logical replication feature to get notified by the db when a job is inserted. Time from job scheduled to picked up by 'runner' ranges from 0.8ms to 5ms! That's more than real-time enough for my background jobs 😂 (unoptimised, using dotnet 9 and ef core)
#efcore #dotnet #postgres #real-time
#efcore #dotnet #postgres #real-time
Experimenting with using postgres as a job queue for background jobs and cron jobs. Not having to manage any separate "real" queue like rabbitmq or similar seems amazing and will simply my stack and code considerable!
#postgres #programming #queue #dotnet #rabbitmq
#postgres #programming #queue #dotnet #rabbitmq
December 15, 2024 at 7:06 PM
Using logical replication feature to get notified by the db when a job is inserted. Time from job scheduled to picked up by 'runner' ranges from 0.8ms to 5ms! That's more than real-time enough for my background jobs 😂 (unoptimised, using dotnet 9 and ef core)
#efcore #dotnet #postgres #real-time
#efcore #dotnet #postgres #real-time
Experimenting with using postgres as a job queue for background jobs and cron jobs. Not having to manage any separate "real" queue like rabbitmq or similar seems amazing and will simply my stack and code considerable!
#postgres #programming #queue #dotnet #rabbitmq
#postgres #programming #queue #dotnet #rabbitmq
December 15, 2024 at 6:49 PM
Experimenting with using postgres as a job queue for background jobs and cron jobs. Not having to manage any separate "real" queue like rabbitmq or similar seems amazing and will simply my stack and code considerable!
#postgres #programming #queue #dotnet #rabbitmq
#postgres #programming #queue #dotnet #rabbitmq
Also it should just call me back - no 'we'll run the job for job' or running on others infrastructure. I need easy access to my database
#programming #api #function #tool #simple
#programming #api #function #tool #simple
What's the best tool/api for doing "call me back at this function in x secs"?
December 8, 2024 at 5:29 PM
Also it should just call me back - no 'we'll run the job for job' or running on others infrastructure. I need easy access to my database
#programming #api #function #tool #simple
#programming #api #function #tool #simple