41554 blogs · [ { "id": "01a0875d-ad58-7311-92ee-14dffad7399e", "title": "Tracing large job failures to serial console bottlenecks from OOM events", "url": "https://cep.dev/posts/oom-killer-network-outage-serial-console/", "published_at": "2025-10-06T00:00:00+00:00" }, { "id": "01a0875d-ad58-7311-92ee-14dffb94d380", "title": "My process to debug DNS timeouts in a large EKS cluster", "url": "https://cep.dev/posts/eks-dns-timeouts-sudo-hostname-lookups/", "published_at": "2025-08-01T17:01:02+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577a9c5945a7", "title": "Permanent infrastructure as code state drift from gzip cloud-init", "url": "https://cep.dev/posts/gzip-userdata-persistent-state-drift/", "published_at": "2024-09-15T21:59:23+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577a9cd5192d", "title": "I advise against changing the kubelet root directory", "url": "https://cep.dev/posts/adventure-trying-change-kubelet-rootdir/", "published_at": "2024-07-21T21:59:23+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577a9d3e68ad", "title": "Debugging a kubernetes node", "url": "https://cep.dev/posts/debugging-kubernetes-node/", "published_at": "2024-04-25T21:59:23+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577a9dec4c09", "title": "How I do sprint planning meetings for a software team", "url": "https://cep.dev/posts/sprint-planning-script/", "published_at": "2024-02-27T15:00:08+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577a9dffbb49", "title": "(Almost) Every infrastructure decision I endorse or regret after 4 years running infrastructure at a startup", "url": "https://cep.dev/posts/every-infrastructure-decision-i-endorse-or-regret-after-4-years-running-infrastructure-at-a-startup/", "published_at": "2024-02-01T21:59:47+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577a9ebc239f", "title": "Using Docker and Terraform for hermetic AWS Lambda CI/CD", "url": "https://cep.dev/posts/using-docker-and-terraform-for-hermetic-aws-lambda-cicd/", "published_at": "2020-04-30T17:01:00+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577a9ed8e066", "title": "After using both, I regretted switching from Terraform to CloudFormation", "url": "https://cep.dev/posts/after-using-both-i-regretted-switching-from-terraform-to-cloudformation/", "published_at": "2019-10-10T17:01:01+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577a9fc48df2", "title": "Closure driven tests: an alternative style to table driven tests in go", "url": "https://cep.dev/posts/closure-driven-tests-an-alternative-style-to-table-driven-tests-in-go/", "published_at": "2019-09-17T17:01:03+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa03d8365", "title": "Using Go 1.13’s new ReportMetric API to benchmark t-digest implementations", "url": "https://cep.dev/posts/using-go-1-13s-new-reportmetric-api-to-benchmark-tdigest-implementations/", "published_at": "2019-09-11T16:01:01+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa0c0429c", "title": "Interface Contracts Matter", "url": "https://cep.dev/posts/interface-contracts-matter/", "published_at": "2019-08-07T16:31:02+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa185cf6a", "title": "Go’s wrapped return pattern to clean up objects with background goroutines", "url": "https://cep.dev/posts/gos-wrapped-return-pattern-to-clean-up-objects-with-background-goroutines/", "published_at": "2019-07-02T17:01:01+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa1c95b2f", "title": "Design better software abstractions using bipartite composition", "url": "https://cep.dev/posts/design-better-software-abstractions-using-bipartite-composition/", "published_at": "2019-05-29T17:04:00+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa2c8e532", "title": "Go’s append is not always thread safe", "url": "https://cep.dev/posts/gos-append-is-not-always-thread-safe/", "published_at": "2018-06-12T16:01:01+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa2e31598", "title": "Using Go 1.10 new trace features to debug an integration test", "url": "https://cep.dev/posts/using-go-1-10-new-trace-features-to-debug-an-integration-test/", "published_at": "2018-01-26T20:08:28+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa344be36", "title": "Aspects of a good Go library", "url": "https://cep.dev/posts/aspects-of-a-good-go-library/", "published_at": "2017-12-18T19:32:56+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa3a51bc7", "title": "Go Experience report: Go’s type system", "url": "https://cep.dev/posts/go-experience-report-gos-type-system/", "published_at": "2017-09-07T16:01:03+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa3d2bed4", "title": "Interface wrapping method erasure", "url": "https://cep.dev/posts/interface-wrapping-method-erasure/", "published_at": "2017-07-26T14:02:39+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa3e8d1c8", "title": "DynamoDB trivia: reads throttled but under capacity", "url": "https://cep.dev/posts/dynamodb-trivia-reads-throttled-but-under-capacity/", "published_at": "2017-01-23T21:02:13+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa49ea7c8", "title": "Creating custom Go profiles with pprof", "url": "https://cep.dev/posts/creating-custom-go-profiles-with-pprof/", "published_at": "2016-12-19T18:01:02+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa5948d7c", "title": "What “accept interfaces, return structs” means in Go", "url": "https://cep.dev/posts/what-accept-interfaces-return-structs-means-in-go/", "published_at": "2016-12-05T18:01:01+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa5fbd694", "title": "Go race condition trivia", "url": "https://cep.dev/posts/go-race-condition-trivia/", "published_at": "2016-11-15T17:01:02+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa6296087", "title": "For Go builtins, nil and empty read the same", "url": "https://cep.dev/posts/for-go-builtins-nil-and-empty-read-the-same/", "published_at": "2016-09-21T16:44:29+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa726f911", "title": "Go 1.7 httptrace and context debug patterns", "url": "https://cep.dev/posts/go-17-httptrace-and-context-debug-patterns/", "published_at": "2016-08-29T17:01:02+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa7803a56", "title": "How to correctly use context.Context in Go 1.7", "url": "https://cep.dev/posts/how-to-correctly-use-context-context-in-go-17/", "published_at": "2016-07-19T15:56:02+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa837ef81", "title": "Go client library best practices", "url": "https://cep.dev/posts/go-client-library-best-practices/", "published_at": "2016-07-05T17:52:53+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa8a7d4d3", "title": "Repository organization tips in Go", "url": "https://cep.dev/posts/repository-organization-tips-in-go/", "published_at": "2016-06-27T22:39:42+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa91ec64c", "title": "Preemptive Interface Anti-Pattern in Go", "url": "https://cep.dev/posts/preemptive-interface-antipattern-in-go/", "published_at": "2016-06-23T22:47:58+00:00" }, { "id": "01a0875d-ad59-731b-a56a-577aa9be1972", "title": "About Me", "url": "https://cep.dev/about/", "published_at": null }, { "id": "01a0875d-ad59-731b-a56a-577aaaa477c8", "title": "Contact", "url": "https://cep.dev/contact/", "published_at": null } ] posts Claim your blog
Back to Posts · Jack's home on the web
Blog · corpus.blog/blogs/cep.dev/posts

Posts · Jack's home on the web

cep.dev

2025

2024

2020

2019

2018

2017

2016

Undated