41554 blogs · [ { "id": "01a0bdfc-1b47-70b7-ba54-2e0520992e74", "title": "About the Blog category", "url": "https://discuss.samsaffron.com/t/about-the-blog-category/3060#post_1", "published_at": "2026-09-17T02:03:20+00:00" }, { "id": "01a0821e-7487-719d-9b47-c431af1551d0", "title": "The age of personalized software", "url": "https://discuss.samsaffron.com/t/the-age-of-personalized-software/2511#post_1", "published_at": "2025-11-23T05:00:51+00:00" }, { "id": "01a087db-0247-7048-89b7-cb6b25fb5b9e", "title": "The age of personalized software", "url": "https://samsaffron.com/archive/2025/11/23/the-age-of-personalized-software", "published_at": "2025-11-23T05:00:51+00:00" }, { "id": "01a0821e-7487-719d-9b47-c431af4d8a91", "title": "Your vibe coded slop PR is not welcome", "url": "https://discuss.samsaffron.com/t/your-vibe-coded-slop-pr-is-not-welcome/2492#post_4", "published_at": "2025-11-03T01:22:02+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda75515bf0", "title": "Your vibe coded slop PR is not welcome", "url": "https://discuss.samsaffron.com/t/your-vibe-coded-slop-pr-is-not-welcome/2492#post_3", "published_at": "2025-10-29T22:27:29+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda75830e28", "title": "Your vibe coded slop PR is not welcome", "url": "https://discuss.samsaffron.com/t/your-vibe-coded-slop-pr-is-not-welcome/2492#post_2", "published_at": "2025-10-29T17:23:18+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda76677938", "title": "Your vibe coded slop PR is not welcome", "url": "https://discuss.samsaffron.com/t/your-vibe-coded-slop-pr-is-not-welcome/2492#post_1", "published_at": "2025-10-27T21:35:36+00:00" }, { "id": "01a087db-0248-714e-90b8-b5b990a055c0", "title": "Your vibe coded slop PR is not welcome", "url": "https://samsaffron.com/archive/2025/10/27/your-vibe-coded-slop-pr-is-not-welcome", "published_at": "2025-10-27T21:35:36+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda76a18f4b", "title": "Discourse in a Docker container", "url": "https://discuss.samsaffron.com/t/discourse-in-a-docker-container/78?page=2#post_25", "published_at": "2025-07-28T08:19:20+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda771dde85", "title": "Discourse in a Docker container", "url": "https://discuss.samsaffron.com/t/discourse-in-a-docker-container/78?page=2#post_24", "published_at": "2025-07-28T07:43:40+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda77f98678", "title": "Commenting powered by Discourse", "url": "https://discuss.samsaffron.com/t/commenting-powered-by-discourse/82#post_15", "published_at": "2025-03-20T06:36:09+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda78cca39e", "title": "Commenting powered by Discourse", "url": "https://discuss.samsaffron.com/t/commenting-powered-by-discourse/82#post_14", "published_at": "2025-03-20T04:55:55+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda79972591", "title": "Category definition for Meta", "url": "https://discuss.samsaffron.com/t/category-definition-for-meta/86#post_2", "published_at": "2024-04-23T16:07:22+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda7a81368e", "title": "Claude 3 Opus - First impressions", "url": "https://discuss.samsaffron.com/t/claude-3-opus-first-impressions/1205#post_1", "published_at": "2024-03-13T05:36:43+00:00" }, { "id": "01a087db-0248-714e-90b8-b5b990a581f9", "title": "Claude 3 Opus - First impressions", "url": "https://samsaffron.com/archive/2024/03/07/claude-3-opus-first-impressions", "published_at": "2024-03-13T05:36:43+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda79e5a5a4", "title": "About the AI category", "url": "https://discuss.samsaffron.com/t/about-the-ai-category/1228#post_1", "published_at": "2024-03-08T07:19:02+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda7b58f085", "title": "An analysis of memory bloat in Active Record 5.2", "url": "https://discuss.samsaffron.com/t/an-analysis-of-memory-bloat-in-active-record-5-2/422#post_20", "published_at": "2024-02-11T22:45:01+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda7be0b671", "title": "An analysis of memory bloat in Active Record 5.2", "url": "https://discuss.samsaffron.com/t/an-analysis-of-memory-bloat-in-active-record-5-2/422#post_19", "published_at": "2024-02-11T22:25:34+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda7c6a5dc2", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=3#post_47", "published_at": "2023-04-24T15:41:56+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda7d328b45", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=3#post_45", "published_at": "2023-04-24T15:41:46+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda7d4232b7", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=3#post_43", "published_at": "2023-04-24T14:47:23+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda7e3c9494", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=3#post_41", "published_at": "2023-04-24T14:46:49+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda7f353930", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=2#post_39", "published_at": "2023-04-05T12:36:44+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda7f84a698", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=2#post_37", "published_at": "2023-04-05T12:36:15+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda803ea95d", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=2#post_35", "published_at": "2023-04-05T12:03:45+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda80a160eb", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=2#post_33", "published_at": "2023-04-05T12:03:21+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda810948b8", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=2#post_31", "published_at": "2023-04-05T01:57:08+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda81dac3e1", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=2#post_29", "published_at": "2023-04-05T01:56:52+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda82b77cac", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=2#post_27", "published_at": "2023-04-05T01:44:01+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda82f71827", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=2#post_25", "published_at": "2023-04-05T01:43:34+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda832b4505", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=2#post_23", "published_at": "2023-04-04T22:16:56+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda8368bd9c", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560?page=2#post_21", "published_at": "2023-04-04T22:16:38+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda83e17580", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560#post_19", "published_at": "2023-04-04T22:13:09+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda844a4e5d", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560#post_17", "published_at": "2023-04-04T22:12:53+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda8529415b", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560#post_15", "published_at": "2023-04-04T00:34:41+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda85644e99", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560#post_13", "published_at": "2023-04-04T00:34:22+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda857070ea", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560#post_11", "published_at": "2023-04-03T21:59:18+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda8607951a", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560#post_9", "published_at": "2023-04-03T21:58:54+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda863b1120", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560#post_7", "published_at": "2023-04-03T21:27:22+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda87217376", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560#post_5", "published_at": "2023-04-03T21:27:03+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda87285d41", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560#post_3", "published_at": "2023-04-03T21:18:53+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda88068ebb", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560#post_2", "published_at": "2023-04-03T21:18:35+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda88b4afcf", "title": "Corrupt a wish with GPT-4", "url": "https://discuss.samsaffron.com/t/corrupt-a-wish-with-gpt-4/560#post_1", "published_at": "2023-04-03T21:14:56+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda898b7989", "title": "About the games category", "url": "https://discuss.samsaffron.com/t/about-the-games-category/558#post_1", "published_at": "2023-04-03T08:37:49+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda89913850", "title": "WebSockets, caution required!", "url": "https://discuss.samsaffron.com/t/websockets-caution-required/228?page=2#post_33", "published_at": "2022-01-21T06:59:45+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda89cc70ed", "title": "WebSockets, caution required!", "url": "https://discuss.samsaffron.com/t/websockets-caution-required/228?page=2#post_32", "published_at": "2022-01-20T18:30:35+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda8a5e857e", "title": "WebSockets, caution required!", "url": "https://discuss.samsaffron.com/t/websockets-caution-required/228?page=2#post_31", "published_at": "2020-12-20T04:18:32+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda8a771cd0", "title": "WebSockets, caution required!", "url": "https://discuss.samsaffron.com/t/websockets-caution-required/228?page=2#post_30", "published_at": "2020-12-09T16:37:43+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda8b19c336", "title": "My i3 window manager setup", "url": "https://discuss.samsaffron.com/t/my-i3-window-manager-setup/505#post_5", "published_at": "2020-02-05T21:55:42+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda8b55b929", "title": "My i3 window manager setup", "url": "https://discuss.samsaffron.com/t/my-i3-window-manager-setup/505#post_4", "published_at": "2020-02-05T18:01:18+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda8b90e533", "title": "How I learned to stop worrying and write my own ORM", "url": "https://discuss.samsaffron.com/t/how-i-learned-to-stop-worrying-and-write-my-own-orm/22?page=4#post_63", "published_at": "2020-01-08T19:35:15+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda8c48dbfd", "title": "Debugging 100% CPU usage in production Ruby on Rails systems", "url": "https://discuss.samsaffron.com/t/debugging-100-cpu-usage-in-production-ruby-on-rails-systems/380#post_14", "published_at": "2019-12-09T10:45:49+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda8d1c0c90", "title": "Debugging hidden memory leaks in Ruby", "url": "https://discuss.samsaffron.com/t/debugging-hidden-memory-leaks-in-ruby/529#post_1", "published_at": "2019-10-15T05:18:18+00:00" }, { "id": "01a087db-0248-714e-90b8-b5b991740156", "title": "Debugging hidden memory leaks in Ruby", "url": "https://samsaffron.com/archive/2019/10/08/debugging-unmanaged-and-hidden-memory-leaks-in-ruby", "published_at": "2019-10-15T05:18:18+00:00" }, { "id": "01a0821e-7488-72f7-a9c4-1eda8daebcf9", "title": "My i3 window manager setup", "url": "https://discuss.samsaffron.com/t/my-i3-window-manager-setup/505#post_3", "published_at": "2019-06-30T23:22:39+00:00" }, { "id": "01a087db-0248-714e-90b8-b5b992155080", "title": "Tests that sometimes fail - flaky test tips", "url": "https://samsaffron.com/archive/2019/05/15/tests-that-sometimes-fail", "published_at": "2019-05-28T06:54:25+00:00" }, { "id": "01a087db-0248-714e-90b8-b5b993137a5f", "title": "My i3 window manager setup", "url": "https://samsaffron.com/archive/2019/04/09/my-i3-window-manager-setup", "published_at": "2019-04-10T02:12:04+00:00" }, { "id": "01a087db-0248-714e-90b8-b5b993eb4f9a", "title": "Why I stuck with Windows for 6 years while developing Discourse", "url": "https://samsaffron.com/archive/2019/03/31/why-i-stuck-with-windows-for-6-years-while-developing-discourse", "published_at": "2019-03-31T23:44:35+00:00" }, { "id": "01a087db-0248-714e-90b8-b5b994532ba2", "title": "Logster and our error logging strategy at Discourse", "url": "https://samsaffron.com/archive/2018/12/27/logster-and-our-logging-strategy-at-discourse", "published_at": "2019-01-02T07:11:20+00:00" }, { "id": "01a087db-0248-714e-90b8-b5b99542fff2", "title": "Finding where STDOUT/STDERR debug messages are coming from", "url": "https://samsaffron.com/archive/2018/08/07/finding-where-stdout-stderr-debug-messages-are-coming-from", "published_at": "2018-08-07T06:06:55+00:00" }, { "id": "01a087db-0248-714e-90b8-b5b9962a964b", "title": "Ruby's external malloc problem", "url": "https://samsaffron.com/archive/2018/06/13/ruby-x27-s-external-malloc-problem", "published_at": "2018-06-13T04:20:53+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6daedc1d0e", "title": "An analysis of memory bloat in Active Record 5.2", "url": "https://samsaffron.com/archive/2018/06/01/an-analysis-of-memory-bloat-in-active-record-5-2", "published_at": "2018-06-01T07:07:15+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6daef0f317", "title": "Managing db schema changes without downtime", "url": "https://samsaffron.com/archive/2018/03/22/managing-db-schema-changes-without-downtime", "published_at": "2018-03-22T06:30:05+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6daf240cea", "title": "Reducing String duplication in Ruby", "url": "https://samsaffron.com/archive/2018/02/16/reducing-string-duplication-in-ruby", "published_at": "2018-02-16T03:59:29+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6dafcb5e6e", "title": "Instrumenting Rails with Prometheus", "url": "https://samsaffron.com/archive/2018/02/02/instrumenting-rails-with-prometheus", "published_at": "2018-02-02T02:45:30+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db089d17d", "title": "Debugging 100% CPU usage in production Ruby on Rails systems", "url": "https://samsaffron.com/archive/2018/01/18/my-production-ruby-on-rails-cpu-is-at-100-now-what", "published_at": "2018-01-18T02:24:25+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db08d7f9c", "title": "Fastest way to profile a method in Ruby", "url": "https://samsaffron.com/archive/2017/10/18/fastest-way-to-profile-a-method-in-ruby", "published_at": "2017-10-18T00:21:47+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db09f22b0", "title": "The current state of Brotli compression", "url": "https://samsaffron.com/archive/2016/06/15/the-current-state-of-brotli-compression", "published_at": "2016-06-15T00:10:11+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db0a47858", "title": "WebSockets, caution required!", "url": "https://samsaffron.com/archive/2015/12/29/websockets-caution-required", "published_at": "2015-12-29T23:25:05+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db104b13e", "title": "Fixing Discourse performance regressions", "url": "https://samsaffron.com/archive/2015/10/02/fixing-discourse-performance-regressions", "published_at": "2015-10-02T07:26:25+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db1a69c12", "title": "Debugging memory leaks in Ruby", "url": "https://samsaffron.com/archive/2015/03/31/debugging-memory-leaks-in-ruby", "published_at": "2015-03-31T06:44:39+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db1e96a15", "title": "Announcing rubybench.org", "url": "https://samsaffron.com/archive/2015/01/08/announcing-rubybench-org", "published_at": "2015-01-08T07:48:13+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db28c651c", "title": "Speeding up Rails 4.2", "url": "https://samsaffron.com/archive/2014/12/01/speeding-up-rails-4-2", "published_at": "2014-12-01T04:30:19+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db2b3e306", "title": "Ruby 2.1 Garbage Collection: ready for production", "url": "https://samsaffron.com/archive/2014/04/08/ruby-2-1-garbage-collection-ready-for-production", "published_at": "2014-04-08T05:16:21+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db32e3706", "title": "Vintage JavaScript begone", "url": "https://samsaffron.com/archive/2014/01/15/vintage-javascript-begone", "published_at": "2014-01-15T02:55:14+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db3e50e2b", "title": "Call to Action: Long running Ruby benchmark", "url": "https://samsaffron.com/archive/2013/12/11/call-to-action-long-running-ruby-benchmark", "published_at": "2013-12-11T04:21:43+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db4484c62", "title": "Commenting powered by Discourse", "url": "https://samsaffron.com/archive/2013/12/04/commenting-powered-by-discourse", "published_at": "2013-12-04T03:12:48+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db4b79948", "title": "Demystifying the Ruby GC", "url": "https://samsaffron.com/archive/2013/11/22/demystifying-the-ruby-gc", "published_at": "2013-11-22T05:15:36+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db585b32f", "title": "Live restarts of a supervised unicorn process", "url": "https://samsaffron.com/archive/2013/11/13/live-restarts-of-a-supervised-unicorn-process", "published_at": "2013-11-13T04:59:56+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db5f99b31", "title": "Discourse in a Docker container", "url": "https://samsaffron.com/archive/2013/11/07/discourse-in-a-docker-container", "published_at": "2013-11-07T23:45:04+00:00" }, { "id": "01a0bdfc-187b-71c5-9f82-6f6db6dbcf67", "title": "Discourse as my blogging platform", "url": "https://samsaffron.com/archive/2013/10/10/discourse-as-my-blogging-platform", "published_at": "2013-10-10T10:44:37+00:00" } ] posts Claim your blog
Back to Sam Saffron
Blog · corpus.blog/blogs/samsaffron.com/posts

Sam Saffron

samsaffron.com

2026

2025

2024

2023

2022

2020

2019

2018

2017

2016

2015

2014

2013