41554 blogs · [ { "id": "01a0876e-1651-7396-9b40-303a88614224", "title": "Surviving rolling deploys when Sidekiq meets a class it doesn’t know yet", "url": "https://dmitrytsepelev.dev/sidekiq-requeue-missing-class", "published_at": "2026-07-07T06:00:00+00:00" }, { "id": "01a0876e-1651-7396-9b40-303a88f1ead8", "title": "LLM layer for a Rails application", "url": "https://dmitrytsepelev.dev/llm-layer-in-rails", "published_at": "2026-05-26T06:00:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf4a4daec", "title": "🇷🇺 Зачем заниматься стандартизацией кодовой базы", "url": "https://dmitrytsepelev.dev/talks/2025-04-25-codebase-standards.html", "published_at": "2025-05-25T11:57:00+00:00" }, { "id": "01a0876e-1651-7396-9b40-303a894a41c0", "title": "Terminal–based game in 150 lines", "url": "https://dmitrytsepelev.dev/terminal-game", "published_at": "2024-09-24T06:00:00+00:00" }, { "id": "01a0876e-1651-7396-9b40-303a8a293c30", "title": "How to test graphql-ruby responses", "url": "https://dmitrytsepelev.dev/how-to-test-graphql-ruby-responses", "published_at": "2024-08-27T06:00:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf47402c3", "title": "🇷🇺 Мониторинг бэкенда с нуля, или Куда смотреть и зачем", "url": "https://dmitrytsepelev.dev/talks/2024-04-26-monitoring-from-scratch.html", "published_at": "2024-04-26T11:57:00+00:00" }, { "id": "01a0876e-1651-7396-9b40-303a8a33eae4", "title": "Service objects in Rails: how to find a mess", "url": "https://dmitrytsepelev.dev/service-objects-anti-patterns", "published_at": "2023-10-10T06:00:00+00:00" }, { "id": "01a0876e-1651-7396-9b40-303a8aa30fe0", "title": "Ruby goes to the movie theater: directing the refactoring of your application", "url": "https://dmitrytsepelev.dev/directing-refactoring", "published_at": "2023-09-12T06:00:00+00:00" }, { "id": "01a0876e-1651-7396-9b40-303a8b8d4199", "title": "Errors in GraphQL", "url": "https://dmitrytsepelev.dev/errors-in-graphql", "published_at": "2023-08-01T09:00:00+00:00" }, { "id": "01a0876e-1651-7396-9b40-303a8c4f4df4", "title": "🎈 Blog turns one year!", "url": "https://dmitrytsepelev.dev/blog-turns-one-year", "published_at": "2023-03-23T00:00:00+00:00" }, { "id": "01a0876e-1651-7396-9b40-303a8ce0f57e", "title": "How to find a memory bloat in your Rails app before it happens", "url": "https://dmitrytsepelev.dev/finding-rails-memory-bloats-early", "published_at": "2023-02-21T00:00:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf3df0eef", "title": "🇷🇺 Ruby", "url": "https://dmitrytsepelev.dev/talks/2023-02-20-podlodka-308.html", "published_at": "2023-02-20T11:57:00+00:00" }, { "id": "01a0876e-1651-7396-9b40-303a8d9536e2", "title": "Fantastic global methods in Ruby and where to find them", "url": "https://dmitrytsepelev.dev/global-methods-in-ruby", "published_at": "2023-01-31T00:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f528b0740f2", "title": "Applicative programming in Ruby: advanced behaviors", "url": "https://dmitrytsepelev.dev/applicative-ruby-advanced-behavior", "published_at": "2023-01-10T00:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f528a2607ac", "title": "Applicative programming in Ruby: railway reimagined", "url": "https://dmitrytsepelev.dev/applicative-ruby-railway", "published_at": "2022-12-20T00:00:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf32fed09", "title": "🇷🇺 Аппликативное программирование в Ruby: секретные архивы тайного общества адептов railway–программирования", "url": "https://dmitrytsepelev.dev/talks/2022-11-16-applicative-rb.html", "published_at": "2022-11-16T11:57:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f528944b370", "title": "On chosing the ideal architecture of the web application", "url": "https://dmitrytsepelev.dev/on-ideal-architecture", "published_at": "2022-08-30T07:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f52892e1940", "title": "Building complex reports for your own DVD rental shop using PostgreSQL window functions", "url": "https://dmitrytsepelev.dev/complex-reports-in-postgresql", "published_at": "2022-07-12T06:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f5288877fdc", "title": "Understading why attr_accessor in Ruby is faster than a regular method", "url": "https://dmitrytsepelev.dev/attr-accessor-in-ruby", "published_at": "2022-06-14T06:00:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf2ed38e2", "title": "🇷🇺 Как и зачем MVCC мешает нам пользоваться базой данных", "url": "https://dmitrytsepelev.dev/talks/2022-05-27-mvcc.html", "published_at": "2022-05-27T11:57:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf30903a7", "title": "🇷🇺 Аппликативное программирование или как парсить SQL на чистом Haskell", "url": "https://dmitrytsepelev.dev/talks/2022-07-16-applicative-parsers.html", "published_at": "2022-05-27T11:57:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf2c27dfd", "title": "🇷🇺 Объектная модель Ruby, а также метапрограммирование и создание DSL", "url": "https://dmitrytsepelev.dev/talks/2022-05-20-ruby-object-model.html", "published_at": "2022-05-20T11:57:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f52887d77ff", "title": "How to make Ruby interpreter run program written in a natural language", "url": "https://dmitrytsepelev.dev/natural-language-programming-with-ruby", "published_at": "2022-05-10T06:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f5287938a9f", "title": "How to configure field extensions using keyword arguments in GraphQL Ruby", "url": "https://dmitrytsepelev.dev/kwarg-extensions-gql-ruby", "published_at": "2022-04-26T06:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f5286961991", "title": "Why Ruby has Symbols", "url": "https://dmitrytsepelev.dev/why-has-ruby-symbols", "published_at": "2022-04-05T07:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f5285fde4fa", "title": "Haskell Adventures: Functors", "url": "https://dmitrytsepelev.dev/haskell-adventures-functors", "published_at": "2022-03-31T00:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f528529676c", "title": "Haskell Adventures: digging into the declarative approach", "url": "https://dmitrytsepelev.dev/haskell-adventures", "published_at": "2022-03-23T00:00:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf25dbd9e", "title": "🇷🇺 Объектная модель Ruby, а также метапрограммирование и создание DSL", "url": "https://dmitrytsepelev.dev/talks/2022-02-24-ruby-object-model.html", "published_at": "2022-02-24T11:57:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf2092b35", "title": "🇷🇺 Как и зачем MVCC мешает нам пользоваться базой данных", "url": "https://dmitrytsepelev.dev/talks/2021-11-06-mvcc.html", "published_at": "2021-11-06T11:57:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf1a8b324", "title": "🇬🇧 Building high-performance GraphQL APIs", "url": "https://dmitrytsepelev.dev/talks/2021-05-28-high-performance-graphql.html", "published_at": "2021-09-28T11:57:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf0fb494b", "title": "🇷🇺 Как и зачем MVCC мешает нам пользоваться базой данных", "url": "https://dmitrytsepelev.dev/talks/2021-09-25-mvcc.html", "published_at": "2021-09-25T11:57:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f5284cf711c", "title": "One row, many threads: How to avoid database duplicates in Rails applications", "url": "https://dmitrytsepelev.dev/2021/08/18/one-row-many-threads-how-to-avoid-database-duplicates-in-rails-applications.html", "published_at": "2021-08-18T09:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f5284799f50", "title": "Custom “cops” for RuboCop: an emergency service for your Ruby code", "url": "https://dmitrytsepelev.dev/2021/06/22/custom-cops-for-rubocop-an-emergency-service-for-your-codebase.html", "published_at": "2021-06-22T09:00:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf069c73b", "title": "🇷🇺 Как ускорить GraphQL API", "url": "https://dmitrytsepelev.dev/talks/2021-03-11-high-performance-graphql.html", "published_at": "2021-03-11T11:57:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f52840ebc99", "title": "How to GraphQL with Ruby, Rails, Active Record, and no N+1", "url": "https://dmitrytsepelev.dev/2020/11/09/how-to-graphql-with-ruby-rails-active-record-and-no-n-plus-one.html", "published_at": "2020-11-09T09:00:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282befd02ad6", "title": "🇬🇧 GraphQL Doesn’t Need To Be Hell", "url": "https://dmitrytsepelev.dev/talks/2020-10-06-ruby-rogues-473.html", "published_at": "2020-10-06T11:57:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282befcc0aef", "title": "🇷🇺 Data Mapping: the Rails Way", "url": "https://dmitrytsepelev.dev/talks/2020-02-29-data-mapping-rails-way.html", "published_at": "2020-02-29T11:57:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f528390be03", "title": "Pulling the trigger: How to update counter caches in your Rails app without Active Record callbacks", "url": "https://dmitrytsepelev.dev/2019/11/19/pulling-the-trigger-how-to-update-counter-caches-in-you-rails-app-without-active-record-callbacks.html", "published_at": "2019-11-19T09:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f5282c4fc3c", "title": "Persisted queries in GraphQL: Slim down Apollo requests to your Ruby application", "url": "https://dmitrytsepelev.dev/2019/11/05/persisted-queries-in-graphql-slim-down-apollo-requests-to-your-ruby-application.html", "published_at": "2019-11-05T09:00:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282beef23332", "title": "🇷🇺 Что скрывает «под капотом» GraphQL Ruby, и как это помогает писать более элегантный API", "url": "https://dmitrytsepelev.dev/talks/2019-09-28-graphql-ruby-under-hood.html", "published_at": "2019-09-28T11:57:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bee2feb68", "title": "🇷🇺 Как мыслить графами или почему GraphQL — это не просто представление структуры БД", "url": "https://dmitrytsepelev.dev/talks/2019-08-02-thinking-in-graphs.html", "published_at": "2019-08-02T11:57:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f528200973f", "title": "GraphQL on Rails: On the way to perfection", "url": "https://dmitrytsepelev.dev/2019/07/16/graphql-on-rails-3-on-the-way-to-perfection.html", "published_at": "2019-07-16T09:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f528152e9a0", "title": "GraphQL on Rails: Updating the data", "url": "https://dmitrytsepelev.dev/2019/06/19/graphql-on-rails-2-updating-the-data.html", "published_at": "2019-06-19T09:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f5280ecd1c4", "title": "GraphQL on Rails: From zero to the first query", "url": "https://dmitrytsepelev.dev/2019/06/04/graphql-on-rails-1-from-zero-to-the-first-query.html", "published_at": "2019-06-04T09:00:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bedc58b94", "title": "🇬🇧 Thinking in graphs: Why GraphQL is not about mapping database to schema", "url": "https://dmitrytsepelev.dev/talks/2019-06-01-thinking-in-graphs.html", "published_at": "2019-06-01T11:57:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f5290558966", "title": "🇷🇺 Как мыслить графами или почему GraphQL — это не просто представление структуры БД", "url": "https://dmitrytsepelev.dev/talks/2019-04-19-thinking-in-graphs.html", "published_at": "2019-04-19T11:57:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f5280914cef", "title": "Wrapping JSON-based ActiveRecord attributes with classes", "url": "https://dmitrytsepelev.dev/2019/02/26/wrapping-json-based-active-record-attributes-with-classes.html", "published_at": "2019-02-26T09:00:00+00:00" }, { "id": "01a0cad8-eadb-7380-b004-0f529014b6dd", "title": "🇷🇺 Повторное использование кода с помощью HOC в React", "url": "https://dmitrytsepelev.dev/talks/2018-05-28-react-hocs.html", "published_at": "2018-05-28T11:57:00+00:00" }, { "id": "01a0cad8-eadc-71d2-9676-282bf585edba", "title": "Tag: ai", "url": "https://dmitrytsepelev.dev/tag/ai.html", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bf61e20d4", "title": "Tag: architecture", "url": "https://dmitrytsepelev.dev/tag/architecture.html", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bf6d867e2", "title": null, "url": "https://dmitrytsepelev.dev/consulting/", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bf6da3492", "title": null, "url": "https://dmitrytsepelev.dev/tag/engineering.html", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bf74776b2", "title": "Tag: functional programming", "url": "https://dmitrytsepelev.dev/tag/functional-programming.html", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bf841ce49", "title": null, "url": "https://dmitrytsepelev.dev/tag/graphql.html", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bf8c94c07", "title": null, "url": "https://dmitrytsepelev.dev/tag/haskell.html", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bf9312972", "title": "dmitrytsepelev.dev · A home for my blog posts", "url": "https://dmitrytsepelev.dev/", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bf9a28837", "title": null, "url": "https://dmitrytsepelev.dev/tag/interpreters.html", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bfa35bcfa", "title": "Open source", "url": "https://dmitrytsepelev.dev/oss/", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bfa3ffc45", "title": "Tag: performance", "url": "https://dmitrytsepelev.dev/tag/performance.html", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bfa42237c", "title": "Tag: psql", "url": "https://dmitrytsepelev.dev/tag/psql.html", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bfaf95d2f", "title": "Tag: rails", "url": "https://dmitrytsepelev.dev/tag/rails.html", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bfbb91509", "title": "Tag: ruby", "url": "https://dmitrytsepelev.dev/tag/ruby.html", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bfc457cc1", "title": null, "url": "https://dmitrytsepelev.dev/subscribe.html", "published_at": null }, { "id": "01a0cad8-eadc-71d2-9676-282bfc5ffc88", "title": null, "url": "https://dmitrytsepelev.dev/talks/", "published_at": null } ] posts Claim your blog
Back to dmitrytsepelev.dev
Blog · corpus.blog/blogs/dmitrytsepelev.dev/posts

dmitrytsepelev.dev

dmitrytsepelev.dev

2026

2025

2024

2023

2022

2021

2020

2019

2018

Undated