{"generator":"Jekyll","link":[{"@attributes":{"href":"https:\/\/dmitrytsepelev.dev\/feed.xml","rel":"self","type":"application\/atom+xml"}},{"@attributes":{"href":"https:\/\/dmitrytsepelev.dev\/","rel":"alternate","type":"text\/html"}}],"updated":"2026-07-08T10:39:37+00:00","id":"https:\/\/dmitrytsepelev.dev\/feed.xml","title":"dmitrytsepelev.dev","subtitle":"A home for my blog posts","entry":[{"title":"Surviving rolling deploys when Sidekiq meets a class it doesn\u2019t know yet","link":{"@attributes":{"href":"https:\/\/dmitrytsepelev.dev\/sidekiq-requeue-missing-class","rel":"alternate","type":"text\/html","title":"Surviving rolling deploys when Sidekiq meets a class it doesn\u2019t know yet"}},"published":"2026-07-07T06:00:00+00:00","updated":"2026-07-07T06:00:00+00:00","id":"https:\/\/dmitrytsepelev.dev\/sidekiq-requeue-missing-class","content":{"@attributes":{"type":"html"}},"author":{"name":{}},"category":[{"@attributes":{"term":"ruby"}},{"@attributes":{"term":"rails"}},{"@attributes":{"term":"sidekiq"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"LLM layer for a Rails application","link":{"@attributes":{"href":"https:\/\/dmitrytsepelev.dev\/llm-layer-in-rails","rel":"alternate","type":"text\/html","title":"LLM layer for a Rails application"}},"published":"2026-05-26T06:00:00+00:00","updated":"2026-05-26T06:00:00+00:00","id":"https:\/\/dmitrytsepelev.dev\/llm-rails","content":{"@attributes":{"type":"html"}},"author":{"name":{}},"category":[{"@attributes":{"term":"ruby"}},{"@attributes":{"term":"architecture"}},{"@attributes":{"term":"ai"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Terminal\u2013based game in 150 lines","link":{"@attributes":{"href":"https:\/\/dmitrytsepelev.dev\/terminal-game","rel":"alternate","type":"text\/html","title":"Terminal\u2013based game in 150 lines"}},"published":"2024-09-24T06:00:00+00:00","updated":"2024-09-24T06:00:00+00:00","id":"https:\/\/dmitrytsepelev.dev\/terminal-game","content":{"@attributes":{"type":"html"}},"author":{"name":{}},"category":{"@attributes":{"term":"ruby"}},"summary":{"@attributes":{"type":"html"}}},{"title":"How to test graphql-ruby responses","link":{"@attributes":{"href":"https:\/\/dmitrytsepelev.dev\/how-to-test-graphql-ruby-responses","rel":"alternate","type":"text\/html","title":"How to test graphql-ruby responses"}},"published":"2024-08-27T06:00:00+00:00","updated":"2024-08-27T06:00:00+00:00","id":"https:\/\/dmitrytsepelev.dev\/how-to-test-graphql-ruby-responses","content":{"@attributes":{"type":"html"}},"author":{"name":{}},"category":[{"@attributes":{"term":"ruby"}},{"@attributes":{"term":"rails"}},{"@attributes":{"term":"graphql"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Service objects in Rails: how to find a mess","link":{"@attributes":{"href":"https:\/\/dmitrytsepelev.dev\/service-objects-anti-patterns","rel":"alternate","type":"text\/html","title":"Service objects in Rails: how to find a mess"}},"published":"2023-10-10T06:00:00+00:00","updated":"2023-10-10T06:00:00+00:00","id":"https:\/\/dmitrytsepelev.dev\/service-objects","content":{"@attributes":{"type":"html"}},"author":{"name":{}},"category":[{"@attributes":{"term":"ruby"}},{"@attributes":{"term":"rails"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Ruby goes to the movie theater: directing the refactoring of your application","link":{"@attributes":{"href":"https:\/\/dmitrytsepelev.dev\/directing-refactoring","rel":"alternate","type":"text\/html","title":"Ruby goes to the movie theater: directing the refactoring of your application"}},"published":"2023-09-12T06:00:00+00:00","updated":"2023-09-12T06:00:00+00:00","id":"https:\/\/dmitrytsepelev.dev\/directing-refactoring","content":{"@attributes":{"type":"html"}},"author":{"name":{}},"category":[{"@attributes":{"term":"ruby"}},{"@attributes":{"term":"rails"}},{"@attributes":{"term":"engineering"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Errors in GraphQL","link":{"@attributes":{"href":"https:\/\/dmitrytsepelev.dev\/errors-in-graphql","rel":"alternate","type":"text\/html","title":"Errors in GraphQL"}},"published":"2023-08-01T09:00:00+00:00","updated":"2023-08-01T09:00:00+00:00","id":"https:\/\/dmitrytsepelev.dev\/errors-in-graphql","content":{"@attributes":{"type":"html"}},"author":{"name":{}},"category":{"@attributes":{"term":"graphql"}},"summary":{"@attributes":{"type":"html"}}},{"title":"\ud83c\udf88 Blog turns one year!","link":{"@attributes":{"href":"https:\/\/dmitrytsepelev.dev\/blog-turns-one-year","rel":"alternate","type":"text\/html","title":"\ud83c\udf88 Blog turns one year!"}},"published":"2023-03-23T00:00:00+00:00","updated":"2023-03-23T00:00:00+00:00","id":"https:\/\/dmitrytsepelev.dev\/blog-turns-one-year","content":{"@attributes":{"type":"html"}},"author":{"name":{}},"summary":{"@attributes":{"type":"html"}}},{"title":"How to find a memory bloat in your Rails app before it happens","link":{"@attributes":{"href":"https:\/\/dmitrytsepelev.dev\/finding-rails-memory-bloats-early","rel":"alternate","type":"text\/html","title":"How to find a memory bloat in your Rails app before it happens"}},"published":"2023-02-21T00:00:00+00:00","updated":"2023-02-21T00:00:00+00:00","id":"https:\/\/dmitrytsepelev.dev\/finding-rails-memory-bloats-early","content":{"@attributes":{"type":"html"}},"author":{"name":{}},"category":[{"@attributes":{"term":"ruby"}},{"@attributes":{"term":"performance"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Fantastic global methods in Ruby and where to find them","link":{"@attributes":{"href":"https:\/\/dmitrytsepelev.dev\/global-methods-in-ruby","rel":"alternate","type":"text\/html","title":"Fantastic global methods in Ruby and where to find them"}},"published":"2023-01-31T00:00:00+00:00","updated":"2023-01-31T00:00:00+00:00","id":"https:\/\/dmitrytsepelev.dev\/global-methods-in-ruby","content":{"@attributes":{"type":"html"}},"author":{"name":{}},"category":{"@attributes":{"term":"ruby"}},"summary":{"@attributes":{"type":"html"}}}]}