41554 blogs · [ { "id": "01a087a2-73da-7186-aca7-3e71b8eb3bb8", "title": "Dealing with Stray Middle Click Events with Google Chrome in X11", "url": "https://matttproud.com/blog/posts/stray-middle-click-event-chrome-x11.html", "published_at": "2025-10-15T12:01:22+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71b9878af7", "title": "jj Recipe: Collapsing Working Tree for Review", "url": "https://matttproud.com/blog/posts/jj-recipe-collapse-working-tree.html", "published_at": "2025-10-12T06:19:26+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71b99c9776", "title": "Requiem for a Hash Function, or: How I learned to love package maphash", "url": "https://matttproud.com/blog/posts/go-maphash.html", "published_at": "2025-09-22T17:25:57+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71ba083458", "title": "Go: Improving Example Visibility in pkgsite (pkg.go.dev)", "url": "https://matttproud.com/blog/posts/go-pkgsite-examples.html", "published_at": "2025-09-09T18:15:05+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71ba7ba03b", "title": "Flagging Files that Ignore Files Match", "url": "https://matttproud.com/blog/posts/ignore-file-flagging.html", "published_at": "2025-08-30T20:51:31+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71bb7add38", "title": "Go: Package-Centric Organization", "url": "https://matttproud.com/blog/posts/go-package-centricity.html", "published_at": "2025-08-18T19:21:19+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71bc70edbd", "title": "Behind the Scenes: CI and CD with this Web Site and Blog", "url": "https://matttproud.com/blog/posts/blog-ci-cd.html", "published_at": "2025-08-11T17:30:44+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71bca10fee", "title": "Approach to LLMs and Other Reflections", "url": "https://matttproud.com/blog/posts/approach-to-llm.html", "published_at": "2025-07-04T20:55:30+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71bca6ac30", "title": "The Curious Case of the Misspelled Streets in California's Little Switzerland", "url": "https://matttproud.com/blog/posts/little-switzerland-california.html", "published_at": "2025-06-04T18:29:06+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71bd2b3725", "title": "Golden File Testing", "url": "https://matttproud.com/blog/posts/golden-file-testing.html", "published_at": "2025-05-28T18:59:55+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71bd8a2d30", "title": "Elegant Configuration APIs and Command Line Flags", "url": "https://matttproud.com/blog/posts/flags-and-structs.html", "published_at": "2025-04-27T16:07:01+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71be7e476a", "title": "Go: Testing Frameworks and Mini-Languages", "url": "https://matttproud.com/blog/posts/testing-frameworks-and-mini-languages.html", "published_at": "2025-04-06T17:40:06+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71bee88403", "title": "Go: Debugging Individual Table Tests", "url": "https://matttproud.com/blog/posts/debugging-go-table-tests.html", "published_at": "2025-04-04T07:00:05+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71bfcae6f9", "title": "Flowchart for Choosing gRPC Methods Types", "url": "https://matttproud.com/blog/posts/grpc-method-discipline.html", "published_at": "2025-03-24T19:19:40+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71bfddc3a4", "title": "Using Elves to Keep Go Toolchain Up-to-Date", "url": "https://matttproud.com/blog/posts/using-elves-to-keep-go-up-to-date.html", "published_at": "2025-03-20T06:27:28+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c0095829", "title": "Bettering Best Practices", "url": "https://matttproud.com/blog/posts/bettering-best-practices.html", "published_at": "2025-02-14T19:55:11+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c0cafb90", "title": "Reflections on Death and Loss", "url": "https://matttproud.com/blog/posts/reflections-on-death-and-loss.html", "published_at": "2024-12-29T03:14:20+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c18e9622", "title": "Unnumbered S-Bahn-Linien", "url": "https://matttproud.com/blog/posts/unnumbered-s-bahn-linien.html", "published_at": "2024-11-05T11:03:42+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c23ed521", "title": "Vagaries of Voting While Abroad: Affordances, Surprises, and Disenfranchisement, etc.", "url": "https://matttproud.com/blog/posts/vagaries-of-voting-abroad.html", "published_at": "2024-10-31T21:41:28+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c254c1a8", "title": "Front 242 Live: A Closing Chapter", "url": "https://matttproud.com/blog/posts/front-242-live.html", "published_at": "2024-10-28T16:07:01+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c30748f8", "title": "Election Loathing: 2024 Edition", "url": "https://matttproud.com/blog/posts/election-loathing-2024.html", "published_at": "2024-10-24T18:33:28+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c3c273c0", "title": "Config Management at Scale: The Gold Standard", "url": "https://matttproud.com/blog/posts/config-management-gold-standard.html", "published_at": "2024-10-11T18:50:33+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c3ce60e7", "title": "Go: Naming Errors and the Parlance of Error Types", "url": "https://matttproud.com/blog/posts/go-error-parlance.html", "published_at": "2024-10-01T06:00:42+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c3fada0b", "title": "Git: Cheap Task Tracking", "url": "https://matttproud.com/blog/posts/git-tasks.html", "published_at": "2024-09-23T05:12:28+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c43a970a", "title": "Notes on Extending Chamberlain Garage Door Opener Receiver Range", "url": "https://matttproud.com/blog/posts/chamberlain-wireless-range.html", "published_at": "2024-09-14T00:18:59+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c499de38", "title": "European Road Law for North American Visitors", "url": "https://matttproud.com/blog/posts/european-road-law-for-north-american-visitors.html", "published_at": "2024-09-01T20:49:29+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c4acadcd", "title": "Go: How the Testing Harness Works", "url": "https://matttproud.com/blog/posts/go-testing-harness.html", "published_at": "2024-08-15T15:26:29+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c5919390", "title": "Zürich: Phallic Fountains and Other Water Features", "url": "https://matttproud.com/blog/posts/zuerich-phallic-fountains.html", "published_at": "2024-08-01T18:35:14+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c679b38c", "title": "Hugo Tag Page Counts", "url": "https://matttproud.com/blog/posts/hugo-tag-page-counts.html", "published_at": "2024-07-26T04:31:03+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c6b2b99d", "title": "Context Cancellation and Server Libraries like gRPC and net/http", "url": "https://matttproud.com/blog/posts/context-cancellation-and-server-libraries.html", "published_at": "2024-07-22T19:49:23+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c7477785", "title": "Iconography of the X Window System: The Boot Stipple", "url": "https://matttproud.com/blog/posts/x-window-system-boot-stipple.html", "published_at": "2024-07-11T05:03:36+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c7a0d052", "title": "In Praise of the fc Shell Builtin", "url": "https://matttproud.com/blog/posts/in-praise-of-fc.html", "published_at": "2024-07-05T06:23:00+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c7e3a985", "title": "Revisiting Test Sizes", "url": "https://matttproud.com/blog/posts/revisiting-test-sizes.html", "published_at": "2024-06-26T18:07:53+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c835ce9a", "title": "Cultural Critique: American Penny Pinching", "url": "https://matttproud.com/blog/posts/cultural-critique-penny-pinching.html", "published_at": "2024-06-17T06:18:29+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c8c7188b", "title": "Political Donation Strategy 2024", "url": "https://matttproud.com/blog/posts/donation-strategy-2024.html", "published_at": "2024-06-16T13:22:17+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c97e900c", "title": "Go Error Propagation and API Contracts", "url": "https://matttproud.com/blog/posts/go-errors-and-api-contracts.html", "published_at": "2024-05-23T18:01:23+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c9ab180a", "title": "Rust Borrowed IntoIterator Trait", "url": "https://matttproud.com/blog/posts/rust-borrowed-intoiterator.html", "published_at": "2024-04-07T06:57:34+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71c9ebdfe4", "title": "A Rant on R and the Melt Function in R", "url": "https://matttproud.com/blog/posts/rant-and-r-melt-function.html", "published_at": "2024-03-06T16:19:23+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71caaa5450", "title": "Great Series I Savings Bond Backtest", "url": "https://matttproud.com/blog/posts/great-series-i-bond-backtest.html", "published_at": "2024-03-02T14:18:48+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71cafd0136", "title": "Go Fonts as Web Fonts", "url": "https://matttproud.com/blog/posts/go-fonts-as-web-fonts.html", "published_at": "2024-02-24T13:34:29+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71cba405ee", "title": "Book Endorsement: ggplot2: Elegant Graphics for Data Analysis", "url": "https://matttproud.com/blog/posts/book-endorsement-ggplot2.html", "published_at": "2024-02-24T07:31:25+00:00" }, { "id": "01a087a2-73da-7186-aca7-3e71cc687e5a", "title": "Preventing LLM Web Site Crawlers", "url": "https://matttproud.com/blog/posts/preventing-llm-crawling.html", "published_at": "2024-02-20T18:17:08+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8be975f2", "title": "Neologism: Context Awareness", "url": "https://matttproud.com/blog/posts/context-awareness.html", "published_at": "2024-02-19T07:56:08+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8c434ef3", "title": "Contextualizing the Go Context API: Program Scopes", "url": "https://matttproud.com/blog/posts/contextualizing-context-scopes.html", "published_at": "2024-02-08T18:32:17+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8c67d8c3", "title": "Teaser: Thought Experiment on Representing Temperature in Climate Comparisons", "url": "https://matttproud.com/blog/posts/teaser-weather-temp-representation.html", "published_at": "2024-01-24T19:20:06+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8c87e2f6", "title": "Tip: Shell Brace Expansion", "url": "https://matttproud.com/blog/posts/tip-shell-brace-expansion.html", "published_at": "2024-01-18T18:36:02+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8d474e5b", "title": "Plain Old Data in Go: POGS", "url": "https://matttproud.com/blog/posts/plain-old-data-in-go-pogs.html", "published_at": "2024-01-17T06:36:28+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8dd74c7a", "title": "RCS Style Keywords in Hugo", "url": "https://matttproud.com/blog/posts/hugo-rcs-style-keywords.html", "published_at": "2024-01-15T19:18:03+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8df892f6", "title": "About the Blog", "url": "https://matttproud.com/blog/singletons/about.html", "published_at": "2024-01-14T19:24:41+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8e1e3bfe", "title": "Acknowledgments", "url": "https://matttproud.com/blog/singletons/acknowledgments.html", "published_at": "2024-01-14T09:05:45+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8e3809b6", "title": "Blogroll", "url": "https://matttproud.com/blog/singletons/blogroll.html", "published_at": "2024-01-12T16:11:35+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8eac7642", "title": "Hugo Root Menu and Ugly URLs: / and /index.html", "url": "https://matttproud.com/blog/posts/hugo-root-menu-ugly-urls.html", "published_at": "2024-01-11T18:25:56+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8eb717b7", "title": "Retiring pbutil (github.com/matttproud/golang_protobuf_extensions)", "url": "https://matttproud.com/blog/posts/retiring-pbutil.html", "published_at": "2024-01-10T18:26:44+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8ee19f95", "title": "Joining Ranges Unions in Google Sheets", "url": "https://matttproud.com/blog/posts/joining-ranges-unions-in-google-sheets.html", "published_at": "2024-01-07T21:19:11+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8f2762b7", "title": "Naming Is Hard: /etc/default", "url": "https://matttproud.com/blog/posts/naming-is-hard-etc-default.html", "published_at": "2024-01-06T19:53:32+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a8f7a8233", "title": "Keyboard Configuration in Debian Linux", "url": "https://matttproud.com/blog/posts/keyboard-configuration-in-debian-linux.html", "published_at": "2024-01-06T19:02:27+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a905c4264", "title": "Notes on Closed Loop Dryers", "url": "https://matttproud.com/blog/posts/notes-on-closed-loop-dryers.html", "published_at": "2024-01-03T20:23:56+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a911f7c48", "title": "Last Row in Google Sheets", "url": "https://matttproud.com/blog/posts/last-row-in-google-sheets.html", "published_at": "2024-01-02T10:42:47+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a914ad5e9", "title": "Hugo URLs With File Extension", "url": "https://matttproud.com/blog/posts/hugo-urls-with-file-extension.html", "published_at": "2023-11-04T20:41:11+00:00" }, { "id": "01a087a2-73db-707d-94f3-c74a9180bfbf", "title": "Hello World", "url": "https://matttproud.com/blog/posts/hello-world.html", "published_at": "2023-10-29T09:18:59+00:00" } ] posts Claim your blog
Back to matttproud.com
Blog · corpus.blog/blogs/matttproud.com/posts

matttproud.com

matttproud.com

2025

2024

2023