{"version":"https://jsonfeed.org/version/1.1","title":"Sergii ","home_page_url":"https://sergii.work","feed_url":"https://sergii-work.pages.dev/json/","description":"","icon":"https://pub-5aa6b3b784684989843da3ff5464f00e.r2.dev/sergii-work/production/images/channel-816cd1708f17bb98ecf3113b7876f736.png","favicon":"https://pub-5aa6b3b784684989843da3ff5464f00e.r2.dev/sergii-work/production/images/favicon-df3635d86c760831e108dc5ed6dd0869.png","language":"en-us","items":[{"id":"0M1NZrDUdeI","title":"The most interesting Python libs discovered in 2022","url":"https://sergii.work/i/my-list-of-python-libs-202-0M1NZrDUdeI/","content_html":"<h2><a href=\"https://github.com/charliermarsh/ruff\" rel=\"noopener noreferrer\" target=\"_blank\">Ruff</a></h2><p>The first one is in fact in PyPi, but written in Rust. Ruff is high-performant linter and it's a perfect replacement of Flake8, isort and pyupgrade. Instead of running linters separately now we have all-in-one solution that do the job in fraction of the time of other linters.</p><p><br></p><h2><a href=\"https://grantjenks.com/docs/diskcache/\" rel=\"noopener noreferrer\" target=\"_blank\">DiskCache</a></h2><p>DiskCache is disk and file based cache library that uses SQLite behind the hood. It also provides a very convenient key-value interface to SQLite and can be used not as a cache, but as a disk-based key-value store. I started to use it like this in the <a href=\"https://github.com/smirnoffs/shortme\" rel=\"noopener noreferrer\" target=\"_blank\">URL Shortner Shortme</a>. </p><p>Later in 2022 I started to use it for caching in AMBOSS. It's slightly slower then Redis in sets and comparable or even faster in gets. In AMBOSS Search DiskCache works extremely well with a few hundreds of gets per second. </p><p><br></p><h2><a href=\"https://hashids.org\" rel=\"noopener noreferrer\" target=\"_blank\">Hashids</a></h2><p>Hashids generates short, unique, non-sequential ids. In fact the algorithm is bidirectional and it doesn't use any sort of hash, instead encoded ids can be decoded into integers. Hashids is the perfect choice if numeric ids should be hidden. </p><p><br></p><h2><a href=\"https://github.com/ulid/spec\" rel=\"noopener noreferrer\" target=\"_blank\">ULID</a></h2><p>ULID stands for Universally Unique Lexicographically Sortable Identifier. One of the Python implementations that I started to use is <a href=\"https://github.com/mdipierro/ulid\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/mdipierro/ulid</a>. The cool thing about ULID that it's, of course, unique, has the size of UUID, it's URL safe and can be sorted in lexicographic order (by the time of creation).</p><p><br></p>","content_text":"RUFF\n\nThe first one is in fact in PyPi, but written in Rust. Ruff is high-performant\nlinter and it's a perfect replacement of Flake8, isort and pyupgrade. Instead of\nrunning linters separately now we have all-in-one solution that do the job in\nfraction of the time of other linters.\n\n\n\n\n\nDISKCACHE\n\nDiskCache is disk and file based cache library that uses SQLite behind the hood.\nIt also provides a very convenient key-value interface to SQLite and can be used\nnot as a cache, but as a disk-based key-value store. I started to use it like\nthis in the URL Shortner Shortme.\n\nLater in 2022 I started to use it for caching in AMBOSS. It's slightly slower\nthen Redis in sets and comparable or even faster in gets. In AMBOSS Search\nDiskCache works extremely well with a few hundreds of gets per second.\n\n\n\n\n\nHASHIDS\n\nHashids generates short, unique, non-sequential ids. In fact the algorithm is\nbidirectional and it doesn't use any sort of hash, instead encoded ids can be\ndecoded into integers. Hashids is the perfect choice if numeric ids should be\nhidden.\n\n\n\n\n\nULID\n\nULID stands for Universally Unique Lexicographically Sortable Identifier. One of\nthe Python implementations that I started to use is\nhttps://github.com/mdipierro/ulid. The cool thing about ULID that it's, of\ncourse, unique, has the size of UUID, it's URL safe and can be sorted in\nlexicographic order (by the time of creation).\n\n\n","date_published":"2023-01-17T15:57:21.899Z","_microfeed":{"web_url":"https://sergii-work.pages.dev/i/the-most-interesting-python-libs-discovered-in-202-0M1NZrDUdeI/","json_url":"https://sergii-work.pages.dev/i/0M1NZrDUdeI/json/","rss_url":"https://sergii-work.pages.dev/i/0M1NZrDUdeI/rss/","guid":"0M1NZrDUdeI","status":"published","itunes:episodeType":"full","date_published_short":"Tue Jan 17 2023","date_published_ms":1673971041899}}],"_microfeed":{"microfeed_version":"0.1.2","base_url":"https://sergii-work.pages.dev","categories":[],"subscribe_methods":[{"name":"RSS","type":"rss","url":"https://sergii-work.pages.dev/rss/","image":"https://sergii-work.pages.dev/assets/brands/subscribe/rss.png","enabled":true,"editable":false,"id":"jp7WoNlQjCh"},{"name":"JSON","type":"json","url":"https://sergii-work.pages.dev/json/","image":"https://sergii-work.pages.dev/assets/brands/subscribe/json.png","enabled":true,"editable":false,"id":"alViVBJlJOo"}],"description_text":"","itunes:type":"episodic","items_sort_order":"newest_first"}}