41554 blogs · [ { "id": "01a08744-bf8e-73ea-a1fc-d2582f013c6a", "title": "Sidestepping the Thundering Herd", "url": "https://blog.bossylobster.com/2025/11/sidestepping-the-thundering-herd.html", "published_at": "2025-11-03T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2582f3240c4", "title": "AI-assisted Postgres schema surgery", "url": "https://blog.bossylobster.com/2025/05/ai-assisted-postgres-schema-surgery.html", "published_at": "2025-05-15T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2582ff3eec5", "title": "Almost unique (constraints)", "url": "https://blog.bossylobster.com/2024/06/almost-unique-constraint.html", "published_at": "2024-06-12T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25830761309", "title": "The missing type in the Go standard library: Date!", "url": "https://blog.bossylobster.com/2024/02/date-the-missing-type.html", "published_at": "2024-02-29T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258312bb1dc", "title": "Moser's Circle Problem and Polynomial Root Asymptotes", "url": "https://blog.bossylobster.com/2023/07/moser-circle-estimates.html", "published_at": "2023-07-18T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25831ddaf8f", "title": "Managing Tailscale subnet routers with Terraform", "url": "https://blog.bossylobster.com/2022/08/tailscale-terraform-fargate.html", "published_at": "2022-08-04T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25832236f62", "title": "What npm Can Learn from Go", "url": "https://blog.bossylobster.com/2022/05/npm-mod.html", "published_at": "2022-05-26T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25832b33a1e", "title": "Emulating RDS Permissions with Terraform", "url": "https://blog.bossylobster.com/2022/04/emulate-rds-permissions.html", "published_at": "2022-04-04T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25832f0caf9", "title": "Epitaph: Blend", "url": "https://blog.bossylobster.com/2022/03/blend-epitaph.html", "published_at": "2022-03-04T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25833777984", "title": "How to Write GitHub Actions in Go", "url": "https://blog.bossylobster.com/2022/02/how-to-write-github-actions-in-go.html", "published_at": "2022-02-07T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583435e913", "title": "Bare Metal Kubernetes with Tailscale", "url": "https://blog.bossylobster.com/2021/12/tailsk8s.html", "published_at": "2021-12-14T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258347f0bb2", "title": "Remodeling the House While Living in It", "url": "https://blog.bossylobster.com/2021/11/safe-column-renames.html", "published_at": "2021-11-01T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258357c1499", "title": "What Is a Milestone Migration and Why Do I Care?", "url": "https://blog.bossylobster.com/2021/10/database-migrations-milestone.html", "published_at": "2021-10-30T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25836081dd2", "title": "The Case for a Metadata Table for Database Migrations", "url": "https://blog.bossylobster.com/2021/10/database-migrations-table.html", "published_at": "2021-10-29T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25836eb2fc0", "title": "When Elementary Becomes Elliptic", "url": "https://blog.bossylobster.com/2021/10/elementary-elliptic.html", "published_at": "2021-10-23T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583782fc3b", "title": "Go Duration, PostgreSQL Interval", "url": "https://blog.bossylobster.com/2021/10/go-duration-postgresql-interval.html", "published_at": "2021-10-06T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25837fb2047", "title": "Decrypting Vault Ciphertext with a Context", "url": "https://blog.bossylobster.com/2021/10/decrypt-vault-ciphertext-context.html", "published_at": "2021-10-05T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25838b02ba3", "title": "Atomically Idempotent", "url": "https://blog.bossylobster.com/2021/10/atomically-idempotent.html", "published_at": "2021-10-04T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583927773c", "title": "Wrapping Behavior of context.WithValue()", "url": "https://blog.bossylobster.com/2021/09/go-context-withvalue.html", "published_at": "2021-09-10T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25839c6e756", "title": "Setting Per-Connection Timeouts with TypeORM", "url": "https://blog.bossylobster.com/2021/08/typeorm-timeouts.html", "published_at": "2021-08-24T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583a2ecdee", "title": "Importing External Keys into Vault", "url": "https://blog.bossylobster.com/2021/07/vault-import.html", "published_at": "2021-07-09T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583a93d672", "title": "Fixing the Custom CA Problem in Node.js", "url": "https://blog.bossylobster.com/2021/05/node-ca-append.html", "published_at": "2021-05-12T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583b8bbb48", "title": "The Node.js CA Footgun", "url": "https://blog.bossylobster.com/2021/05/node-ca-footgun.html", "published_at": "2021-05-11T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583bdceecd", "title": "Custom GitHub Actions", "url": "https://blog.bossylobster.com/2021/03/custom-github-actions.html", "published_at": "2021-03-03T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583cb466a1", "title": "HTTP Is Just Text", "url": "https://blog.bossylobster.com/2021/02/http-is-just-text.html", "published_at": "2021-02-24T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583d2a5c00", "title": "Broken Pipe in a Haystack", "url": "https://blog.bossylobster.com/2020/12/broken-pipe.html", "published_at": "2020-12-01T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583d5b46c2", "title": "pow Confusion", "url": "https://blog.bossylobster.com/2020/11/pow-confusion.html", "published_at": "2020-11-25T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583e18b80a", "title": "Running dd-agent Locally", "url": "https://blog.bossylobster.com/2020/09/local-dd-agent.html", "published_at": "2020-09-28T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583ef45cce", "title": "Reading Istio Secrets", "url": "https://blog.bossylobster.com/2020/09/istio-workload-secrets.html", "published_at": "2020-09-04T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583f2ad29c", "title": "Preventing PostgreSQL Deadlocks in Go", "url": "https://blog.bossylobster.com/2020/09/go-pq-prevent-deadlock.html", "published_at": "2020-09-01T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583f31bb43", "title": "How Do Slices Gain Capacity in Go?", "url": "https://blog.bossylobster.com/2020/07/go-slices-gain-capacity.html", "published_at": "2020-07-29T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2583fc8b9f4", "title": "A Day in the Life of a (Secure) Request", "url": "https://blog.bossylobster.com/2020/07/life-of-request.html", "published_at": "2020-07-27T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258404954e8", "title": "Difference Between localhost and 0.0.0.0", "url": "https://blog.bossylobster.com/2020/07/loopback-vs-any-ip.html", "published_at": "2020-07-17T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25840b4cb1d", "title": "Isolating (Cordoning) a Misbehaving Pod", "url": "https://blog.bossylobster.com/2020/07/cordon-pod.html", "published_at": "2020-07-16T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25841450b9d", "title": "ADDR vs. HOST", "url": "https://blog.bossylobster.com/2020/07/addr-vs-host.html", "published_at": "2020-07-08T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258416d6c30", "title": "Running vault Locally", "url": "https://blog.bossylobster.com/2020/07/running-vault-locally.html", "published_at": "2020-07-07T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258424983f6", "title": "Express Trust Proxy", "url": "https://blog.bossylobster.com/2020/05/trust-proxy.html", "published_at": "2020-05-14T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584314744f", "title": "A Threadsafe Connection Pool for Requests", "url": "https://blog.bossylobster.com/2020/04/threadsafe-connection-pool.html", "published_at": "2020-04-22T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25843443e26", "title": "Decoding HTTP/2 and gRPC", "url": "https://blog.bossylobster.com/2019/08/http2-note.html", "published_at": "2019-08-31T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258439889be", "title": "Type Guards for Union Types in TypeScript", "url": "https://blog.bossylobster.com/2019/06/type-guards-for-union-types.html", "published_at": "2019-06-09T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25843ea6f59", "title": "Attack of Ruby Stack Traces", "url": "https://blog.bossylobster.com/2019/05/ruby-stack-traces.html", "published_at": "2019-05-27T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258447b8375", "title": "Learn You a LAPACK for Great Good", "url": "https://blog.bossylobster.com/2018/09/learn-you-a-lapack.html", "published_at": "2018-09-13T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25845464258", "title": "Graduated", "url": "https://blog.bossylobster.com/2018/09/graduated.html", "published_at": "2018-09-07T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584597bbc0", "title": "Installing Python on OS X", "url": "https://blog.bossylobster.com/2017/09/python-on-os-x.html", "published_at": "2017-09-19T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25845c81a99", "title": "How Does Go Compute a Logarithm", "url": "https://blog.bossylobster.com/2017/02/golang-and-log-x.html", "published_at": "2017-02-06T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25846411e7d", "title": "Newton's (Method's) Failure", "url": "https://blog.bossylobster.com/2016/11/newtons-failure.html", "published_at": "2016-11-24T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25846e60c3c", "title": "How Many Ways to Make a (Football) Score", "url": "https://blog.bossylobster.com/2016/01/how-many-ways-to-make-a-football-score.html", "published_at": "2016-01-10T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25847583f12", "title": "An Interesting Bug", "url": "https://blog.bossylobster.com/2015/07/an-interesting-bug.html", "published_at": "2015-07-09T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25847fdeb33", "title": "Constantly Seek Criticism", "url": "https://blog.bossylobster.com/2014/12/constantly-seek-criticism.html", "published_at": "2014-12-31T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584875e724", "title": "Brand New Blog", "url": "https://blog.bossylobster.com/2014/12/brand-new-blog.html", "published_at": "2014-12-04T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258496347fb", "title": "Quantitative Interview Brain Teaser: Computer Assistance", "url": "https://blog.bossylobster.com/2014/09/quantitative-interview-brain-teaser.html", "published_at": "2014-09-28T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584a267324", "title": "Quantitative Brain Teaser: Brain Only", "url": "https://blog.bossylobster.com/2014/09/quantitative-brain-teaser-brain-only.html", "published_at": "2014-09-22T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584a6b06e1", "title": "Math for Humans, A Second Attempt", "url": "https://blog.bossylobster.com/2014/08/math-for-humans-second-attempt.html", "published_at": "2014-08-22T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584b5ae997", "title": "Bayes' Law Primer", "url": "https://blog.bossylobster.com/2014/07/bayes-law-primer.html", "published_at": "2014-07-29T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584c47f0ec", "title": "Conditional Probabilities in \"Thinking Fast and Slow\"", "url": "https://blog.bossylobster.com/2014/07/conditional-probabilities-in-thinking.html", "published_at": "2014-07-29T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584cb6905b", "title": "Trigonometry and Nested Radicals", "url": "https://blog.bossylobster.com/2013/11/trigonometry-and-nested-radicals.html", "published_at": "2013-11-25T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584d28edc2", "title": "Calculating a Greatest Common Divisor with Dirichlet's Help", "url": "https://blog.bossylobster.com/2013/09/calculating-greatest-common-divisor.html", "published_at": "2013-09-10T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584dde97ec", "title": "Some Fibonacci Fun with Primes", "url": "https://blog.bossylobster.com/2013/08/some-fibonacci-fun-with-primes.html", "published_at": "2013-08-18T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584e3c071e", "title": "Bridging OAuth 2.0 objects between GData and Discovery", "url": "https://blog.bossylobster.com/2012/12/bridging-oauth-20-objects-between-gdata.html", "published_at": "2012-12-24T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584eb40d2f", "title": "Last to Cross the Finish Line: Part Three", "url": "https://blog.bossylobster.com/2012/09/last-to-cross-finish-line-part-three.html", "published_at": "2012-09-10T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584f84d0d8", "title": "Last to Cross the Finish Line: Part Two", "url": "https://blog.bossylobster.com/2012/08/last-to-cross-finish-line-part-two.html", "published_at": "2012-08-29T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2584f9eb348", "title": "Last to Cross the Finish Line: Part One", "url": "https://blog.bossylobster.com/2012/08/last-to-cross-finish-line-part-one.html", "published_at": "2012-08-27T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25850096c3e", "title": "A Decorator for App Engine Deferred Tasks", "url": "https://blog.bossylobster.com/2012/08/a-decorator-for-appengine-deferred-tasks.html", "published_at": "2012-08-19T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25850b002b5", "title": "Life of π: Continued Fractions and Infinite Series", "url": "https://blog.bossylobster.com/2012/05/life-of-continued-fractions-and.html", "published_at": "2012-05-17T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258514a2f9f", "title": "Reverse Calculating An Interest Rate", "url": "https://blog.bossylobster.com/2012/05/reverse-calculating-interest-rate.html", "published_at": "2012-05-15T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25851c49c4b", "title": "Silly Pranks on your Friends", "url": "https://blog.bossylobster.com/2012/04/silly-pranks-on-your-friends.html", "published_at": "2012-04-07T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25851d9b6c3", "title": "Where have I been?", "url": "https://blog.bossylobster.com/2012/03/where-have-i-been.html", "published_at": "2012-03-28T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258520354f4", "title": "A Python Metaclass for \"extra bad\" errors in Google App Engine", "url": "https://blog.bossylobster.com/2011/11/python-metaclass-for-extra-bad-errors.html", "published_at": "2011-11-30T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25852bddc67", "title": "Handling errors in Google App Engine...and failing", "url": "https://blog.bossylobster.com/2011/11/handling-errors-in-google-app-engineand.html", "published_at": "2011-11-27T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2585363cde6", "title": "Quick and Dirty: Santa's Coming", "url": "https://blog.bossylobster.com/2011/11/quick-and-dirty-santas-coming.html", "published_at": "2011-11-17T08:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2585449714e", "title": "This Lobster, not so Bossy", "url": "https://blog.bossylobster.com/2011/10/this-lobster-not-so-bossy.html", "published_at": "2011-10-17T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258549df07d", "title": "Protecting Sensitive Information in Public Git Repositories", "url": "https://blog.bossylobster.com/2011/10/protecting.html", "published_at": "2011-10-05T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25855744c5d", "title": "Finding (Fibonacci) Golden Nuggets Part 2", "url": "https://blog.bossylobster.com/2011/08/finding-fibonacci-golden-nuggets-part-2.html", "published_at": "2011-08-29T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25855c6ed12", "title": "Finding (Fibonacci) Golden Nuggets Part 1", "url": "https://blog.bossylobster.com/2011/08/finding-fibonacci-golden-nuggets.html", "published_at": "2011-08-28T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258569851a7", "title": "Conway's Topograph Part 3", "url": "https://blog.bossylobster.com/2011/08/conways-topograph-part-3.html", "published_at": "2011-08-24T01:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25856ab6972", "title": "Conway's Topograph Part 2", "url": "https://blog.bossylobster.com/2011/08/conways-topograph-part-2.html", "published_at": "2011-08-23T21:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25856de9a02", "title": "Conway's Topograph Part 1", "url": "https://blog.bossylobster.com/2011/08/conways-topograph-part-1.html", "published_at": "2011-08-23T17:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d25857c2238e", "title": "The Lesson V8 Can Teach Python and Other Dynamic Languages", "url": "https://blog.bossylobster.com/2011/08/lesson-v8-can-teach-python-and-other.html", "published_at": "2011-08-17T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2585884d94c", "title": "Woo hoo", "url": "https://blog.bossylobster.com/2011/07/woo-hoo.html", "published_at": "2011-07-22T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d258592b56eb", "title": "Continued fraction expansions of irrational square roots", "url": "https://blog.bossylobster.com/2011/07/continued-fraction-expansions-of.html", "published_at": "2011-07-18T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2585a1207d0", "title": "Continued Fractions for the Greater Good part 1", "url": "https://blog.bossylobster.com/2011/07/continued-fractions-for-greater-good.html", "published_at": "2011-07-10T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2585ac6ae8b", "title": "Verifying 1and1 Site Ownership with Google Apps", "url": "https://blog.bossylobster.com/2011/07/verifying-1-site-ownership-with-google.html", "published_at": "2011-07-03T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2585af73faa", "title": "Getting Divvy-like functionality on Linux", "url": "https://blog.bossylobster.com/2011/07/i-love-divvy-as-im-sure-many-do-but-its.html", "published_at": "2011-07-01T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2585b9513ef", "title": "Life", "url": "https://blog.bossylobster.com/2011/06/life.html", "published_at": "2011-06-02T07:00:00+00:00" }, { "id": "01a08744-bf8e-73ea-a1fc-d2585c10f42f", "title": "First", "url": "https://blog.bossylobster.com/2011/04/first.html", "published_at": "2011-04-14T07:00:00+00:00" } ] posts Claim your blog
Back to blog.bossylobster.com
Blog · corpus.blog/blogs/blog.bossylobster.com/posts

blog.bossylobster.com

blog.bossylobster.com

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011