41554 blogs · [ { "id": "01a0876b-cb4b-70fd-978a-673f1fca4541", "title": "What I learned wiring SSO across my homelab", "url": "https://developer20.com/homelab-sso-with-authentik/", "published_at": "2026-05-06T00:00:00+00:00" }, { "id": "01a0876b-cb4b-70fd-978a-673f2086bfa6", "title": "Part 2: CPU Profiling Deep Dive - Understanding Where Time Actually Goes", "url": "https://developer20.com/pprof-part2/", "published_at": "2026-01-30T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc82495e37", "title": "pprof quick start: profile a Go service in 10 minutes", "url": "https://developer20.com/pprof-part1-quick-start/", "published_at": "2025-12-01T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc828b76d6", "title": "Go libs I don't use but are popular", "url": "https://developer20.com/go-libs-i-dont-use/", "published_at": "2024-09-10T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8384c134", "title": "Testing code with unpredictable or random output", "url": "https://developer20.com/test-with-random/", "published_at": "2024-08-12T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc84295dd5", "title": "Kubernestes cluster for free on OCI", "url": "https://developer20.com/free-k8s-cluster/", "published_at": "2024-01-16T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc84485da6", "title": "How to hash and compare passwords in Go", "url": "https://developer20.com/notes/Passwords-in-Go/", "published_at": "2023-12-23T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8526fa29", "title": "How to gather GC metrics in NodeJS", "url": "https://developer20.com/notes/GC-in-NodeJS/", "published_at": "2023-12-22T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc85a8da3e", "title": "Flattening the Package Structure", "url": "https://developer20.com/flattening-package-structure/", "published_at": "2023-07-16T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8620dac3", "title": "New project: ecommerce", "url": "https://developer20.com/ecommerce/", "published_at": "2023-07-07T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8699ae28", "title": "Password policies", "url": "https://developer20.com/password-policies/", "published_at": "2023-07-07T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc86dc9163", "title": "Memory-wall problem: cache locality in Go", "url": "https://developer20.com/memory-wall-problem/", "published_at": "2023-06-01T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc871a2ede", "title": "Why We Should Avoid Using `else` in Programming", "url": "https://developer20.com/elseless/", "published_at": "2023-04-04T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc873504e8", "title": "Writing tests in Go (business apps)", "url": "https://developer20.com/testing-in-go/", "published_at": "2022-11-23T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc87767282", "title": "My Smart Home high-level architecture", "url": "https://developer20.com/smart-home-architecture/", "published_at": "2022-10-28T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc88241afe", "title": "JSON in Go", "url": "https://developer20.com/json/", "published_at": "2022-10-17T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc88f5993b", "title": "Honestly about why Go sucks (or not)", "url": "https://developer20.com/hate-go/", "published_at": "2022-07-26T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc898c70af", "title": "Top level logging", "url": "https://developer20.com/top-level-logging/", "published_at": "2021-12-16T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc89d6cc66", "title": "`replace` directive in go modules", "url": "https://developer20.com/go-mod-replace/", "published_at": "2021-12-15T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8a6351db", "title": "gRPC with SSL/TLS", "url": "https://developer20.com/grpc-ssl/", "published_at": "2021-11-29T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8adfe45d", "title": "How to structure Go code?", "url": "https://developer20.com/how-to-structure-go-code/", "published_at": "2021-10-27T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8b1bfae9", "title": "HTTP context livetime", "url": "https://developer20.com/http-connection-livetime/", "published_at": "2021-08-09T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8b5d8f45", "title": "Wrapping commands in Go", "url": "https://developer20.com/wrapping-commands-with-go/", "published_at": "2021-07-14T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8bc4d0ec", "title": "Periodically restarting apps on Kubernetes", "url": "https://developer20.com/periodically-restarting-apps-on-k8s/", "published_at": "2021-04-12T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8bc7af2a", "title": "Writing custom linter in Go", "url": "https://developer20.com/custom-go-linter/", "published_at": "2021-03-31T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8cc322ba", "title": "Go Programming Language - book review", "url": "https://developer20.com/reviews/go-programming-language/", "published_at": "2021-02-09T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8cd7983c", "title": "Extracting the business logic - the project", "url": "https://developer20.com/extracting-the-business-logic-project/", "published_at": "2021-01-12T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8d0c4ab4", "title": "Refactoring for better testability", "url": "https://developer20.com/refactoring-for-better-testability/", "published_at": "2020-11-17T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8d2b618b", "title": "Is my interface too big?", "url": "https://developer20.com/is-my-interface-too-big/", "published_at": "2020-10-28T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8e092098", "title": "Deep Work: Rules for Focused Success in a Distracted World", "url": "https://developer20.com/reviews/deep-work/", "published_at": "2020-10-15T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8eee9f56", "title": "Go with some context", "url": "https://developer20.com/go-context/", "published_at": "2020-10-15T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8fea5bfc", "title": "Never Split the Difference: Negotiating As If Your Life Depended On It", "url": "https://developer20.com/reviews/never-split-the-difference/", "published_at": "2020-10-05T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc8fef478c", "title": "I talk to spammers. Here is what I found", "url": "https://developer20.com/i-talk-to-scammers/", "published_at": "2020-08-25T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc90d88004", "title": "Go web frameworks", "url": "https://developer20.com/go-web-frameworks/", "published_at": "2020-08-10T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc91d4f9cf", "title": "Add header to every request in Go", "url": "https://developer20.com/add-header-to-every-request-in-go/", "published_at": "2020-07-21T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc92ae7b06", "title": "Unavailability is fine. Prepare for it", "url": "https://developer20.com/unavailability-is-fine/", "published_at": "2020-07-09T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc93797b1d", "title": "Pointer and value semantics in Go", "url": "https://developer20.com/pointer-and-value-semantics-in-go/", "published_at": "2020-06-29T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9406b8d1", "title": "What you should know about Go slices", "url": "https://developer20.com/what-you-should-know-about-go-slices/", "published_at": "2020-04-27T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc94bbd1c9", "title": "Using sync.Pool", "url": "https://developer20.com/using-sync-pool/", "published_at": "2020-03-31T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc95b4e687", "title": "OAuth2 and Go", "url": "https://developer20.com/oauth2-and-go/", "published_at": "2020-03-09T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc96427c02", "title": "Garnish - simple varnish implementation written in Go", "url": "https://developer20.com/garnish-simple-varnish-in-go/", "published_at": "2020-02-03T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc96f2fe00", "title": "Summary of 2019", "url": "https://developer20.com/summary-of-2019/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc97e1c99e", "title": "I want to learn Go - how to start?", "url": "https://developer20.com/i-want-to-learn-go/", "published_at": "2019-12-09T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc97e85d6b", "title": "Writing a reverse proxy in Go", "url": "https://developer20.com/writing-proxy-in-go/", "published_at": "2019-11-25T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc984bf130", "title": "Writing TCP scanner in Go", "url": "https://developer20.com/tcp-scanner-in-go/", "published_at": "2019-10-23T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9902fd1f", "title": "Golang Tips & Tricks #7 - private repository and proxy", "url": "https://developer20.com/golang-tips-and-trics-vii/", "published_at": "2019-10-02T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc99bcde40", "title": "How I organize packages in Go", "url": "https://developer20.com/how-i-organize-packages-in-go/", "published_at": "2019-08-22T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9a2bb02e", "title": "Golang Tips & Tricks #6 - the _test package", "url": "https://developer20.com/golang-tips-and-trics-vi/", "published_at": "2019-08-14T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9b1555b4", "title": "Golang Tips & Tricks #5 - blank identifier in structs", "url": "https://developer20.com/golang-tips-and-trics-v/", "published_at": "2019-07-22T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9baaa215", "title": "GoGoConf 2019 - report", "url": "https://developer20.com/gogoconf-2019/", "published_at": "2019-07-05T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9c82009b", "title": "Software 2.0", "url": "https://developer20.com/software2.0/", "published_at": "2019-05-24T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9cf37b3a", "title": "When you can lose messages in Kafka", "url": "https://developer20.com/when-you-can-nose-messages-in-kafka/", "published_at": "2019-05-14T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9d56e29b", "title": "Golang Tips & Tricks #4 - internal folders", "url": "https://developer20.com/golang-tips-and-trics-iv/", "published_at": "2019-03-25T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9d95959e", "title": "Learning On Mistakes", "url": "https://developer20.com/learning-on-mistakes/", "published_at": "2019-03-25T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9e63bf78", "title": "Golang Tips & Tricks #3 - graceful shutdown", "url": "https://developer20.com/golang-tips-and-trics-iii/", "published_at": "2019-03-18T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9f053412", "title": "Golang Tips & Tricks #2 - interfaces", "url": "https://developer20.com/golang-tips-and-trics-ii/", "published_at": "2019-03-11T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9f26309f", "title": "Golang Tips & Tricks #1 - errors", "url": "https://developer20.com/golang-tips-and-trics-i/", "published_at": "2019-03-04T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9fc41162", "title": "Go deeper – Database connection pool", "url": "https://developer20.com/go-deeper-database-connection-pool/", "published_at": "2019-01-25T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cc9fcfa0c6", "title": "Be aware of copying in Go", "url": "https://developer20.com/be-aware-of-coping-in-go/", "published_at": "2019-01-19T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca08a22b2", "title": "Books I read in 2018", "url": "https://developer20.com/books-i-read-in-2018/", "published_at": "2019-01-07T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca08b6d0b", "title": "How to send multiple variables via channel in golang?", "url": "https://developer20.com/how-to-send-multiple-variables-via-channel-in-golang/", "published_at": "2018-12-10T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca0c9873f", "title": "Scientific method", "url": "https://developer20.com/scientific-method/", "published_at": "2018-12-03T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca110d89c", "title": "Entity and value object", "url": "https://developer20.com/entity-and-value-object/", "published_at": "2018-08-04T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca1aa53f3", "title": "Why Do Many People Say That Scrum Is A Bullshit", "url": "https://developer20.com/why-do-many-people-say-that-scrum-is-a-bullshit/", "published_at": "2018-07-17T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca259b804", "title": "Services in DDD finally explained", "url": "https://developer20.com/services-in-ddd-finally-explained/", "published_at": "2018-07-15T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca325c2df", "title": "What I've learned on a hackathon", "url": "https://developer20.com/what-ive-learned-on-a-hackathon/", "published_at": "2018-06-29T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca350bb43", "title": "Indexing in MySQL", "url": "https://developer20.com/indexing-in-mysql/", "published_at": "2018-05-29T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca3740c4c", "title": "History of WWW", "url": "https://developer20.com/history-of-www/", "published_at": "2018-05-02T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca3cba5f3", "title": "How to name exceptions? It’s not so obvious...", "url": "https://developer20.com/how-to-name-exceptions-its-not-so-obvious/", "published_at": "2018-04-02T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca3f8cad0", "title": "Mutational tests", "url": "https://developer20.com/mutational-tests/", "published_at": "2018-03-24T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca44b5d49", "title": "An agony of trying to do the job", "url": "https://developer20.com/an-agony-of-trying-to-do-the-job/", "published_at": "2017-12-27T00:00:00+00:00" }, { "id": "01a0876b-cb4c-717e-a2f7-b8cca46596aa", "title": null, "url": "https://developer20.com/notes/Heap-Escape-Analysis-in-Go/", "published_at": null } ] posts Claim your blog
Back to developer20.com
Blog · corpus.blog/blogs/developer20.com/posts

developer20.com

developer20.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

Undated