Go engineer building telecom core networks and the cloud-native systems around them. I work primarily on 5G/EPC network functions, then take the production problems I find upstream to the Go and Kubernetes ecosystem.
- 5G Core, EPC interworking, Diameter, SBI, HTTP/2, and NETCONF
- Go services on Kubernetes, with Helm-based delivery and end-to-end testing
- Storage, observability, and performance work that makes production systems safer under load
A Go monorepo for a combined 5GC + EPC stack: UDM, AUSF, UDR, HSS, EIR, Diameter and HTTP/2 gateways, provisioning, and the test and profiling tools needed to operate them.
I contribute production-driven fixes to the infrastructure I use: Kubernetes tooling, storage, media, observability, stream processing, and 5G projects.
36 merged pull requests across 15 upstream projects totalling 245.5k stars · 14 in review
Browse every merged and open upstream pull request
| Project | ★ | PR | Contribution |
|---|---|---|---|
| rclone/rclone | 59.9k | #9693 | fserrors: make http2 "server sent GOAWAY" a retriable error - fixes #96… |
| rclone/rclone | 59.9k | #9751 | operations: check checksums in rcat with known size - fixes #6305 |
| rclone/rclone | 59.9k | #9868 | dropbox: fix shared folder mount for roots nested more than one level d… |
| rclone/rclone | 59.9k | #9869 | dropbox: match shared-folder and received-file names case-insensitively |
| rclone/rclone | 59.9k | #9870 | serve docker: fix volume path being lost when the plugin restarts |
| rclone/rclone | 59.9k | #9872 | fs/config: only run --password-command once when using --daemon |
| rclone/rclone | 59.9k | #9944 | operations: make --immutable work with copyto, moveto and single file c… |
| rclone/rclone | 59.9k | #9945 | smb: save the user name in the config even if it matches the current us… |
| rclone/rclone | 59.9k | #9947 | local: stop --copy-links following symlink loops - fixes #4402 |
| rclone/rclone | 59.9k | #9949 | vfs: fix AddVirtual ignoring isDir |
| rclone/rclone | 59.9k | #9950 | serve dlna: log unescaped paths - fixes #7370 |
| go-gitea/gitea | 58.1k | #38693 | fix(lfs): failed upload deletes a concurrent upload's meta object |
| alibaba/open-code-review | 40.4k | #501 | feat(allowlist): add Julia (.jl) support |
| seaweedfs/seaweedfs | 34.9k | #10656 | s3api: fix ListObjectsV2 dropping objects under a partial prefix |
| seaweedfs/seaweedfs | 34.9k | #11393 | fix(volume): return an error instead of panicking on a corrupt needle s… |
| seaweedfs/seaweedfs | 34.9k | #11397 | fix(volume): return an error instead of 201 when a write lands on no vo… |
| seaweedfs/seaweedfs | 34.9k | #11398 | fix(volume): stop ScanVolumeFileFrom at a header it cannot advance past |
| seaweedfs/seaweedfs | 34.9k | #11399 | fix(volume): validate sizes in ReadNeedleBlob and WriteNeedleBlob |
| grpc-ecosystem/grpc-gateway | 20k | #7110 | docs: add runnable OpenTelemetry tracing example |
| grpc-ecosystem/grpc-gateway | 20k | #7207 | fix(openapiv2): omit oneof siblings of path parameters from query param… |
| IBM/sarama | 12.5k | #3752 | fix(client): only deregister the broker registered under that ID |
| shirou/gopsutil | 11.9k | #2143 | [docker][linux]: support cgroup v2 in Cgroup* functions |
| uptrace/bun | 5k | #1414 | fix(bunotel): honor WithMeterProvider when reporting DB stats metrics |
| uptrace/bun | 5k | #1415 | fix(relation): do not duplicate joined models on a shared base model |
| nginx/nginx-gateway-fabric | 1.2k | #5639 | fix: correct validation error diagnostics and add missing CRD schema co… |
| bluenviron/gortsplib | 940 | #1171 | sdp: support oversized numbers in origin (bluenviron/mediamtx#5949) |
| kerlenton/mcpsnoop | 356 | #212 | feat(check): emit SARIF 2.1.0 so findings land in the Security tab |
| kerlenton/mcpsnoop | 356 | #213 | feat(cli): wrap and unwrap the Claude Desktop config for one server |
| nickvsnetworking/pyhss | 115 | #337 | diameterService: iterate over a snapshot of activePeers |
| bluenviron/mediacommon | 99 | #368 | h265: fix DTS extraction of streams with temporal sub-layers |
| bluenviron/mediacommon | 99 | #373 | pmp4: support stsz with a constant sample size (bluenviron/mediamtx#580… |
| bluenviron/mediacommon | 99 | #375 | pmp4: support tracks without edts |
| bluenviron/mediacommon | 99 | #376 | pmp4: return seek errors from GetPayload |
| bluenviron/mediacommon | 99 | #377 | pmp4: support tracks longer than 2^32 ticks |
| free5gc/amf | 23 | #232 | fix: guard non-string DNN type assertions in GMM handler |
| free5gc/tngf | 5 | #47 | fix: prevent slice-bounds panic on malformed IKE SA proposal |
| Project | ★ | PR | Contribution |
|---|---|---|---|
| rclone/rclone | 59.9k | #9946 | serve sftp, serve webdav: fix stale hashes reported while a file is bei… |
| bluenviron/mediamtx | 20.2k | #6195 | playback: cache segment headers to speed up /list (#5094) |
| bluenviron/mediamtx | 20.2k | #6196 | add udpWriteBufferSize parameter (#6100) |
| argoproj/argo-workflows | 17k | #16602 | perf(executor): read the resource once for all output parameters |
| IBM/sarama | 12.5k | #3753 | fix(offset): don't block PartitionOffsetManager.Close without auto-comm… |
| kubeshark/kubeshark | 12.1k | #1956 | helm: use Recreate strategy for hub Deployment when local snapshots PVC… |
| velero-io/velero | 10.3k | #10212 | Fix Zip Slip path check accepting a sibling directory in archive extrac… |
| anchore/syft | 9.6k | #5121 | fix(binary): match istio snapshot and older pre-release versions |
| redpanda-data/connect | 8.8k | #4656 | slack: only enforce token prefixes on literal values |
| bluenviron/gortsplib | 940 | #1178 | format: support mismatched fmtp payload type |
| nickvsnetworking/pyhss | 115 | #338 | diameter: answer with an error Result-Code when a handler raises |
| free5gc/udm | 9 | #96 | fix(udm): return ProblemDetails for unmatched resource URIs |
| free5gc/udr | 4 | #70 | fix: return ProblemDetails for unmatched resource URIs |
| free5gc/ike | 3 | #24 | fix: prevent slice-bounds panics from uint8 SPI offset overflow |
Regenerated nightly from the GitHub API by
scripts/build_stats.py. Own and private repositories
are excluded, so every row is a public upstream contribution.
Go · Kubernetes · Helm · Docker · gRPC / protobuf · Diameter ·
HTTP/2 · SBI · NETCONF · distributed SQL · observability