{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":214360975,"defaultBranch":"main","name":"randomizer","ownerLogin":"ahamlinman","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2019-10-11T06:32:47.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/603974?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1699252343.0","currentOid":""},"activityList":{"items":[{"before":"8045d3c96130794459a1e40165e71451a3b15a15","after":"ec74a82c4881137393dbbc7523a3e80949a90f41","ref":"refs/heads/main","pushedAt":"2024-06-07T04:28:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Bump dependencies\n\nI'll start using the term \"bump\" instead of \"upgrade,\" to reinforce that\nincreasing dependency versions does not strictly make things *better*.\nIt merely allows for that possibility while also introducing significant\nrisks of its own.\n\nHighlights from my crappy review:\n\n- bbolt had a couple changes, so that's interesting.\n- Amazon turned the links in their doc comments into Go's new\n Markdown-style links.\n- Someone added zstd support to... something.\n- Apparently Go supports z/OS (or at least x/sys/unix does).\n- Those huge byte arrays in google.golang.org/protobuf scare the crap\n out of me, as usual.\n\nSeriously, I *DO* actually skim the vendor diff like this on EVERY ONE\nOF THESE BUMPS; this is NOT the first time. I just don't usually bother\nto comment on it, since it's not an especially deep review. The longer I\nwait to look at these (to manage the risk of bad things happening), the\nmore work it takes to do even this light skim, and the less thought I\nput into it.\n\nSince this is a personal project, I've decided that the learning value\nof keeping up with changes in the ecosystem and potentially finding\nissues early (as unlikely as it is that *I'd* be the one to catch\nsomething) outweighs the risks (of new bugs and vulnerabilities)\ninherent in dependency bumps. This is not the same thing as \"all\ndependency bumps are good all the time.\" You may notice, for example,\nthat I do not have Dependabot PRs enabled for this repo (except by\nmistake early on, in one PR that I overrode with a manual commit in the\nsame fashion as this one, albeit without this level of commit message).\n\nBut, yes, I've been lax on terminology, and \"upgrade\" is not the right\nterm to use. So I am fixing that part of the process, at least.","shortMessageHtmlLink":"Bump dependencies"}},{"before":"eb36bd48fd2d411f3911ea56b3f61ac54dbb7aa3","after":"8045d3c96130794459a1e40165e71451a3b15a15","ref":"refs/heads/main","pushedAt":"2024-04-24T06:28:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Fix a minor lint on an error string\n\nI've always felt like the starting capital here was weird (even if\ngrammatically correct), so I'm not sure why I didn't rewrite it like\nthis before.","shortMessageHtmlLink":"Fix a minor lint on an error string"}},{"before":"2d0da8a81d1736872b66a0e54124596d35bbeb70","after":"eb36bd48fd2d411f3911ea56b3f61ac54dbb7aa3","ref":"refs/heads/main","pushedAt":"2024-04-24T01:57:19.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Merge branch 'doc-editing'\n\nI spent some time last month editing all of the documentation, as an\nexcuse to try out Vale (for English prose linting).\n\nNeither of the rule sets I tried satisfied me, and on a second pass I\nfound that I \"fixed\" some findings by introducing other, more obvious\nerrors. I'm glad I know about Vale now, but I don't plan on trying too\nhard to integrate it into my workflow.\n\nEither way, I think this is a good changeset.","shortMessageHtmlLink":"Merge branch 'doc-editing'"}},{"before":"4425001669fb77bf72cb1f1441dd7c162fb246a8","after":"2d0da8a81d1736872b66a0e54124596d35bbeb70","ref":"refs/heads/main","pushedAt":"2024-04-24T01:17:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Upgrade dependencies\n\nPer Dependabot finding on golang.org/x/net.","shortMessageHtmlLink":"Upgrade dependencies"}},{"before":"8e0f7c11b9317cef43529b55734cb8122169f1d0","after":"4425001669fb77bf72cb1f1441dd7c162fb246a8","ref":"refs/heads/main","pushedAt":"2024-03-30T03:30:01.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Switch the module path to GitHub\n\nSee https://github.com/ahamlinman/importbounce for information about\ngo.alexhamlin.co being deprecated.","shortMessageHtmlLink":"Switch the module path to GitHub"}},{"before":"7c332ab37d7449823f335c5d303572695f486231","after":"8e0f7c11b9317cef43529b55734cb8122169f1d0","ref":"refs/heads/main","pushedAt":"2024-03-07T14:50:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Upgrade dependencies","shortMessageHtmlLink":"Upgrade dependencies"}},{"before":"c0ebf78ad2a3bdacebcc6a5f6088f0a19762c6f3","after":"7c332ab37d7449823f335c5d303572695f486231","ref":"refs/heads/main","pushedAt":"2024-02-18T00:30:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Upgrade dependencies","shortMessageHtmlLink":"Upgrade dependencies"}},{"before":"d2151f26acbfe6aa0a56accb149ec43f9e0c8393","after":"c0ebf78ad2a3bdacebcc6a5f6088f0a19762c6f3","ref":"refs/heads/main","pushedAt":"2024-02-17T07:33:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Migrate to Node.js 20 GitHub actions","shortMessageHtmlLink":"Migrate to Node.js 20 GitHub actions"}},{"before":"63ef9ed8d89facdcf1624e9ecbf3439823b9df25","after":"d2151f26acbfe6aa0a56accb149ec43f9e0c8393","ref":"refs/heads/main","pushedAt":"2024-02-17T07:27:02.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Require GET on /healthz\n\nI'm gonna do things my way. Outside Hyrum's Law.","shortMessageHtmlLink":"Require GET on /healthz"}},{"before":"4bb8043a847fdd0265f7189a2576211e6c921bce","after":"63ef9ed8d89facdcf1624e9ecbf3439823b9df25","ref":"refs/heads/main","pushedAt":"2024-02-07T04:03:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"(sorry, got too excited)","shortMessageHtmlLink":"(sorry, got too excited)"}},{"before":"22383e5108b9858a4af065ebebe298659cda907e","after":"4bb8043a847fdd0265f7189a2576211e6c921bce","ref":"refs/heads/main","pushedAt":"2024-02-07T04:02:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Migrate to math/rand/v2 (and by extension Go 1.22)\n\nIf this thing can't adopt a new and improved version of the rand package\nless than 12 hours after its first stable release, what is it even for?\n\nIt's the randomizer. It has one job. And it deserves the best tools the\nGo standard library has to offer.","shortMessageHtmlLink":"Migrate to math/rand/v2 (and by extension Go 1.22)"}},{"before":"610942c853b8499cd86637ea4dbca1ebffc327e0","after":"22383e5108b9858a4af065ebebe298659cda907e","ref":"refs/heads/main","pushedAt":"2024-02-03T22:54:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Upgrade dependencies","shortMessageHtmlLink":"Upgrade dependencies"}},{"before":"9a997a13c69c5080dc5a4e060b8db4ecf5ca9389","after":"610942c853b8499cd86637ea4dbca1ebffc327e0","ref":"refs/heads/main","pushedAt":"2023-12-18T22:16:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Upgrade dependencies","shortMessageHtmlLink":"Upgrade dependencies"}},{"before":"b326a505d5c4237ed2ed926c8d367897567a2eb4","after":"9a997a13c69c5080dc5a4e060b8db4ecf5ca9389","ref":"refs/heads/main","pushedAt":"2023-12-01T03:47:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Upgrade dependencies","shortMessageHtmlLink":"Upgrade dependencies"}},{"before":"74e0143722024ed9cab70af141aa5f32ed2b86d3","after":"b326a505d5c4237ed2ed926c8d367897567a2eb4","ref":"refs/heads/main","pushedAt":"2023-11-11T22:31:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Fix up how randomizer-server configures signals\n\nI typo-ed the name of the slice containing the signals on non-Unix\nbuilds, so this wouldn't have compiled at all on those systems. Hardly\nthe first time I've written something Unix-only that \"seems\" like it\ncould be cross-platform. Should I bother with cross-platform GitHub\nActions testing? Not sure if it's worth it for this specific project.","shortMessageHtmlLink":"Fix up how randomizer-server configures signals"}},{"before":"b9f0d3e6a964d6c18e647f81206919bfc8c4b421","after":"74e0143722024ed9cab70af141aa5f32ed2b86d3","ref":"refs/heads/main","pushedAt":"2023-11-10T20:39:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Publish to both Docker Hub and GitHub Container Registry\n\nCloud Run refuses to pull from ghcr.io; it only supports Google's\nregistry solutions and (for some reason) Docker Hub. So I guess this\nwill remain a workable solution until Microsoft buys Docker, Inc.","shortMessageHtmlLink":"Publish to both Docker Hub and GitHub Container Registry"}},{"before":"8896b1bcccf24c0ffbbd36c5c2db4ea7d5807cb2","after":"b9f0d3e6a964d6c18e647f81206919bfc8c4b421","ref":"refs/heads/main","pushedAt":"2023-11-09T04:40:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Split up the deployment guides into their own docs","shortMessageHtmlLink":"Split up the deployment guides into their own docs"}},{"before":"fbdd2de11e4a58ed4a1c6bf91fcefb266e57ee6e","after":"8896b1bcccf24c0ffbbd36c5c2db4ea7d5807cb2","ref":"refs/heads/main","pushedAt":"2023-11-09T04:12:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Use the term \"failed\" in all error logs\n\nThis should be much closer to 100% consistent. Perhaps even 100%\nconsistent.","shortMessageHtmlLink":"Use the term \"failed\" in all error logs"}},{"before":"176f8987804140cebc6da2e9926f8377aac2709a","after":"fbdd2de11e4a58ed4a1c6bf91fcefb266e57ee6e","ref":"refs/heads/main","pushedAt":"2023-11-07T05:25:23.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Activate the Firestore backend in all builds\n\nReally, this goes along with the previous README change.\n\nSomeday I _might_ support build tags to select specific backends for\noptimized binary sizes. No promises, though, since the cold start time\nfor the 35 MiB binary on Cloud Run is surprisingly low compared to my\nexpectations. It might even be better than Lambda, despite all the\ntuning I've done there.","shortMessageHtmlLink":"Activate the Firestore backend in all builds"}},{"before":"046f40b6e83c53e547e45055706cecc2e8f882c8","after":null,"ref":"refs/heads/firestore","pushedAt":"2023-11-06T06:32:23.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"}},{"before":"987e0199b9326984d9845906624d0925b695c0ab","after":"176f8987804140cebc6da2e9926f8377aac2709a","ref":"refs/heads/main","pushedAt":"2023-11-06T06:32:23.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Remove the old breaking change notes from the README\n\nFirst, these both happened a long time ago.\n\nSecond, does anyone else even deploy this?\n\nThird, if I'm going to document Google Cloud support (and perhaps even\nthat SQLite-based store I keep thinking about), I'd like to remove some\nnoise first.","shortMessageHtmlLink":"Remove the old breaking change notes from the README"}},{"before":null,"after":"046f40b6e83c53e547e45055706cecc2e8f882c8","ref":"refs/heads/firestore","pushedAt":"2023-11-06T05:36:18.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Report the existence of deleted Firestore groups\n\nThis assumes that there's no weird way to switch from the gRPC transport\nto the HTTP transport without my knowledge. The other option, of course,\nwould be to check the actual existence of the document beforehand, but\nI'd like to avoid the extra API call if I can.","shortMessageHtmlLink":"Report the existence of deleted Firestore groups"}},{"before":"2744fc6de941120dfb44e3a5235c84697d33d7ee","after":"987e0199b9326984d9845906624d0925b695c0ab","ref":"refs/heads/main","pushedAt":"2023-11-05T06:12:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Experiment with JSON logging in the Lambda handler\n\nI want to see what CloudWatch does with this.","shortMessageHtmlLink":"Experiment with JSON logging in the Lambda handler"}},{"before":"9f243c794ffd197427c2cbee0d4c770a07a6df75","after":"2744fc6de941120dfb44e3a5235c84697d33d7ee","ref":"refs/heads/main","pushedAt":"2023-11-05T03:41:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Support randomizer-server logging to JSON\n\nWhy add structured logging without showing off the structure?","shortMessageHtmlLink":"Support randomizer-server logging to JSON"}},{"before":"e80d32617935b4ca2e29c465c14b9cce8b272e60","after":"9f243c794ffd197427c2cbee0d4c770a07a6df75","ref":"refs/heads/main","pushedAt":"2023-11-05T03:17:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Add an armv7 image build, because why not?","shortMessageHtmlLink":"Add an armv7 image build, because why not?"}},{"before":"5fbf44155ee83e9afcaa0182383207c5c28b7c4a","after":"e80d32617935b4ca2e29c465c14b9cce8b272e60","ref":"refs/heads/main","pushedAt":"2023-11-05T03:08:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Test and publish in order\n\nBuild number 1 is green, and that's all anyone needs to care about.\n\nThat said, I think it makes sense to not publish the container until\n_after_ the tests have run.","shortMessageHtmlLink":"Test and publish in order"}},{"before":"6f031f27e118fcc85465ba3e2d565d3cbf6dcebe","after":"5fbf44155ee83e9afcaa0182383207c5c28b7c4a","ref":"refs/heads/main","pushedAt":"2023-11-05T02:56:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Attempt to set up a basic GitHub Actions pipeline\n\nRuns tests and publishes a container image for the server. We'll see if\nit works on the first try.","shortMessageHtmlLink":"Attempt to set up a basic GitHub Actions pipeline"}},{"before":"95e0c6a9bbdb477d20c9f13ce77aeae574a56c80","after":"6f031f27e118fcc85465ba3e2d565d3cbf6dcebe","ref":"refs/heads/main","pushedAt":"2023-11-05T02:31:01.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Migrate entirely to native Go errors\n\nThis removes all direct use of github.com/pkg/errors, leaving it as a\ndependency of the AWS X-Ray SDK.\n\nThis was a lot trickier than I expected! At first I forgot about the\nsemantic of errors.Wrap[f] where it returns nil if the original error is\nnil, and I nearly introduced a whole bunch of new errors where I\nshouldn't have. In fact, even after reviewing the code about 5 times,\nI'm still worried I've missed something. Sadly, my testing around error\ncases is not great, especially for the lower levels of the DynamoDB and\nbbolt stores. I'll just try to be as comprehensive as possible in manual\ntesting before I ship this anywhere important.\n\nOn the plus side, this was a great opportunity to clean up a lot of\nweird patterns, like calling an important method with important side\neffects in the argument list of a big errors.Wrap call. I also found a\ncase where I was wrapping an error twice with the same message, even\nthough the first of those wrappings was already in an \"if err != nil\"\ncheck, such that the second wrapping would always be a no-op.","shortMessageHtmlLink":"Migrate entirely to native Go errors"}},{"before":"66b0312d10c25e729db66b53c98b03faf1a48e96","after":"95e0c6a9bbdb477d20c9f13ce77aeae574a56c80","ref":"refs/heads/main","pushedAt":"2023-11-05T01:39:05.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Migrate all Slack error logging to log/slog\n\nThis includes a full update to the Lambda handler, which doesn't\nactually do much logging of its own.\n\nWithin the Slack handler, I'm doing something vaguely like the logr\nwrapper that Kubernetes uses internally, with the error followed by a\nmessage.\n\nTechnically it would be smart to include the request context in my logs,\nbut I don't think it's that big of a deal.","shortMessageHtmlLink":"Migrate all Slack error logging to log/slog"}},{"before":"775912de7988e815fe662054d49b5b83f5dfec75","after":"66b0312d10c25e729db66b53c98b03faf1a48e96","ref":"refs/heads/main","pushedAt":"2023-11-05T01:14:17.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"ahamlinman","name":"Alex Hamlin","path":"/ahamlinman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/603974?s=80&v=4"},"commit":{"message":"Implement graceful shutdown; start using the log package\n\nFigured I might as well go for this while I was in here. I should really\nconvert the Slack handler as well.","shortMessageHtmlLink":"Implement graceful shutdown; start using the log package"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEXtW7jAA","startCursor":null,"endCursor":null}},"title":"Activity · ahamlinman/randomizer"}