{"generator":"Jekyll","link":[{"@attributes":{"href":"https:\/\/sobolevn.me\/feed.xml","rel":"self","type":"application\/atom+xml"}},{"@attributes":{"href":"https:\/\/sobolevn.me\/","rel":"alternate","type":"text\/html"}}],"updated":"2026-03-30T07:37:46+00:00","id":"https:\/\/sobolevn.me\/feed.xml","title":"sobolevn\u2019s personal blog","subtitle":"On good software, mediocre software, and bad software. Also rants about management and development processes.\n","author":{"name":"Nikita Sobolev"},"entry":[{"title":"Python ParamSpec guide","link":{"@attributes":{"href":"https:\/\/sobolevn.me\/2021\/12\/paramspec-guide","rel":"alternate","type":"text\/html","title":"Python ParamSpec guide"}},"published":"2021-12-31T00:00:00+00:00","updated":"2021-12-31T00:00:00+00:00","id":"https:\/\/sobolevn.me\/2021\/12\/paramspec-guide","content":{"@attributes":{"type":"html"}},"author":{"name":"Nikita Sobolev"},"category":{"@attributes":{"term":"python"}},"summary":{"@attributes":{"type":"html"}}},{"title":"Typeclasses in Python","link":{"@attributes":{"href":"https:\/\/sobolevn.me\/2021\/06\/typeclasses-in-python","rel":"alternate","type":"text\/html","title":"Typeclasses in Python"}},"published":"2021-06-30T00:00:00+00:00","updated":"2021-06-30T00:00:00+00:00","id":"https:\/\/sobolevn.me\/2021\/06\/typeclasses-in-python","content":{"@attributes":{"type":"html"}},"author":{"name":"Nikita Sobolev"},"category":{"@attributes":{"term":"python"}},"summary":{"@attributes":{"type":"html"}}},{"title":"Make tests a part of your app","link":{"@attributes":{"href":"https:\/\/sobolevn.me\/2021\/02\/make-tests-a-part-of-your-app","rel":"alternate","type":"text\/html","title":"Make tests a part of your app"}},"published":"2021-02-28T00:00:00+00:00","updated":"2021-02-28T00:00:00+00:00","id":"https:\/\/sobolevn.me\/2021\/02\/make-tests-a-part-of-your-app","content":{"@attributes":{"type":"html"}},"author":{"name":"Nikita Sobolev"},"category":{"@attributes":{"term":"python"}},"summary":{"@attributes":{"type":"html"}}},{"title":"Higher Kinded Types in Python","link":{"@attributes":{"href":"https:\/\/sobolevn.me\/2020\/10\/higher-kinded-types-in-python","rel":"alternate","type":"text\/html","title":"Higher Kinded Types in Python"}},"published":"2020-10-24T00:00:00+00:00","updated":"2020-10-24T00:00:00+00:00","id":"https:\/\/sobolevn.me\/2020\/10\/higher-kinded-types-in-python","content":{"@attributes":{"type":"html"}},"author":{"name":"Nikita Sobolev"},"category":{"@attributes":{"term":"python"}},"summary":{"@attributes":{"type":"html"}}},{"title":"How async should have been","link":{"@attributes":{"href":"https:\/\/sobolevn.me\/2020\/06\/how-async-should-have-been","rel":"alternate","type":"text\/html","title":"How async should have been"}},"published":"2020-06-07T00:00:00+00:00","updated":"2020-06-07T00:00:00+00:00","id":"https:\/\/sobolevn.me\/2020\/06\/how-async-should-have-been","content":{"@attributes":{"type":"html"}},"author":{"name":"Nikita Sobolev"},"category":{"@attributes":{"term":"python"}},"summary":{"@attributes":{"type":"html"}}},{"title":"Do not log","link":{"@attributes":{"href":"https:\/\/sobolevn.me\/2020\/03\/do-not-log","rel":"alternate","type":"text\/html","title":"Do not log"}},"published":"2020-03-11T00:00:00+00:00","updated":"2020-03-11T00:00:00+00:00","id":"https:\/\/sobolevn.me\/2020\/03\/do-not-log","content":{"@attributes":{"type":"html"}},"author":{"name":"Nikita Sobolev"},"category":[{"@attributes":{"term":"devops"}},{"@attributes":{"term":"python"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Conditional coverage","link":{"@attributes":{"href":"https:\/\/sobolevn.me\/2020\/02\/conditional-coverage","rel":"alternate","type":"text\/html","title":"Conditional coverage"}},"published":"2020-02-25T00:00:00+00:00","updated":"2020-02-25T00:00:00+00:00","id":"https:\/\/sobolevn.me\/2020\/02\/conditional-coverage","content":{"@attributes":{"type":"html"}},"author":{"name":"Nikita Sobolev"},"category":{"@attributes":{"term":"python"}},"summary":{"@attributes":{"type":"html"}}},{"title":"Typed functional Dependency Injection in Python","link":{"@attributes":{"href":"https:\/\/sobolevn.me\/2020\/02\/typed-functional-dependency-injection","rel":"alternate","type":"text\/html","title":"Typed functional Dependency Injection in Python"}},"published":"2020-02-02T00:00:00+00:00","updated":"2020-02-02T00:00:00+00:00","id":"https:\/\/sobolevn.me\/2020\/02\/typed-functional-dependency-injection","content":{"@attributes":{"type":"html"}},"author":{"name":"Nikita Sobolev"},"category":{"@attributes":{"term":"python"}},"summary":{"@attributes":{"type":"html"}}},{"title":"Complexity Waterfall","link":{"@attributes":{"href":"https:\/\/sobolevn.me\/2019\/10\/complexity-waterfall","rel":"alternate","type":"text\/html","title":"Complexity Waterfall"}},"published":"2019-10-13T00:00:00+00:00","updated":"2019-10-13T00:00:00+00:00","id":"https:\/\/sobolevn.me\/2019\/10\/complexity-waterfall","content":{"@attributes":{"type":"html"}},"author":{"name":"Nikita Sobolev"},"category":{"@attributes":{"term":"python"}},"summary":{"@attributes":{"type":"html"}}},{"title":"Testing Django Migrations","link":{"@attributes":{"href":"https:\/\/sobolevn.me\/2019\/10\/testing-django-migrations","rel":"alternate","type":"text\/html","title":"Testing Django Migrations"}},"published":"2019-10-13T00:00:00+00:00","updated":"2019-10-13T00:00:00+00:00","id":"https:\/\/sobolevn.me\/2019\/10\/testing-django-migrations","content":{"@attributes":{"type":"html"}},"author":{"name":"Nikita Sobolev"},"category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"django"}}],"summary":{"@attributes":{"type":"html"}}}]}