<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: imankulov</title><link>https://news.ycombinator.com/user?id=imankulov</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 14 Apr 2026 17:37:31 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=imankulov" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by imankulov in "Make tmux pretty and usable (2024)"]]></title><description><![CDATA[
<p>I left tmux for zellij after several unsuccessful attempts to get Shift+Enter working.<p>Was quite impressed initially and invested weeks in building new muscle memory, but somehow Zellij crashed with panic more than once, leaving all my processes orphaned. Decided to go back to tmux, and found a simple fix for my Shift+Enter issue.<p>In case anyone is looking for it, the fix is "bind-key -T root S-Enter send-keys C-j" borrowed from <a href="https://github.com/anthropics/claude-code/issues/6072" rel="nofollow">https://github.com/anthropics/claude-code/issues/6072</a>.</p>
]]></description><pubDate>Mon, 13 Apr 2026 15:46:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47753726</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=47753726</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47753726</guid></item><item><title><![CDATA[New comment by imankulov in "Ask HN: What Are You Working On? (April 2026)"]]></title><description><![CDATA[
<p>Building Smello (<a href="https://github.com/smelloscope/smello" rel="nofollow">https://github.com/smelloscope/smello</a>), a Python library and a local server that capture your outgoing HTTP requests to help you debug API integrations.<p>The idea was inspired by Mailpit, which I've used for years to debug outgoing emails. A few implementation details were literally stolen from Sentry SDK with an "implement it how Sentry does it" prompt.<p><a href="https://smello.io" rel="nofollow">https://smello.io</a></p>
]]></description><pubDate>Mon, 13 Apr 2026 10:21:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47750047</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=47750047</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47750047</guid></item><item><title><![CDATA[New comment by imankulov in "Goodbye to Sora"]]></title><description><![CDATA[
<p>> I liked GPT primarily because I felt like it respected me: I never felt like it was trying to distract me from my work or get me to waste time doomscrolling.<p>Not about Sora, but about ChatGPT. I felt the same way for quite a while until I noticed that its response pattern has changed, apparently aiming for higher engagement. Someone aggressively pursued a metric.<p>At some point, ChatGPT started leaving annoying cliffhangers in its every response, like "Do you want me to share a little-known secret of X that professionals often use?" Like, come on!</p>
]]></description><pubDate>Wed, 25 Mar 2026 13:03:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47516807</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=47516807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47516807</guid></item><item><title><![CDATA[The Aging Democracy (2023)]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.cambridge.org/core/journals/perspectives-on-politics/article/aging-democracy-demographic-effects-political-legitimacy-and-the-quest-for-generational-pluralism/FCCA7EAC66F472FF42179B178FD611EC">https://www.cambridge.org/core/journals/perspectives-on-politics/article/aging-democracy-demographic-effects-political-legitimacy-and-the-quest-for-generational-pluralism/FCCA7EAC66F472FF42179B178FD611EC</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45324253">https://news.ycombinator.com/item?id=45324253</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 21 Sep 2025 16:36:33 +0000</pubDate><link>https://www.cambridge.org/core/journals/perspectives-on-politics/article/aging-democracy-demographic-effects-political-legitimacy-and-the-quest-for-generational-pluralism/FCCA7EAC66F472FF42179B178FD611EC</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=45324253</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45324253</guid></item><item><title><![CDATA[Booleans and B-tree Indexes: A Cautionary Tale]]></title><description><![CDATA[
<p>Article URL: <a href="https://doist.dev/posts/is-mysql">https://doist.dev/posts/is-mysql</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38641885">https://news.ycombinator.com/item?id=38641885</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 14 Dec 2023 14:47:18 +0000</pubDate><link>https://doist.dev/posts/is-mysql</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=38641885</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38641885</guid></item><item><title><![CDATA[New comment by imankulov in "Trap and test AWS SES emails locally"]]></title><description><![CDATA[
<p>There are several alternatives. Most of them, including mailcatcher, seem to be unmaintained.<p>Mailpit is an alternative that has regular updates: <a href="https://mailpit.axllent.org/" rel="nofollow noreferrer">https://mailpit.axllent.org/</a></p>
]]></description><pubDate>Mon, 20 Nov 2023 07:30:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=38343958</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=38343958</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38343958</guid></item><item><title><![CDATA[New comment by imankulov in "Grammarly editor writing services are malfunctioning"]]></title><description><![CDATA[
<p>I was using Grammarly for a long time, but a while ago I made a wrapper around the OpenAI API to fix grammar and style and highlight the changes.<p>- Demo: <a href="https://refiner.roman.pt/" rel="nofollow noreferrer">https://refiner.roman.pt/</a>.
- Source: <a href="https://github.com/imankulov/refiner">https://github.com/imankulov/refiner</a>.<p>For me it works better than Grammarly.</p>
]]></description><pubDate>Thu, 02 Nov 2023 18:39:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=38118089</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=38118089</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38118089</guid></item><item><title><![CDATA[New comment by imankulov in "Microservices are hard"]]></title><description><![CDATA[
<p>In my experience, the "Citadel pattern" is a good alternative to microservices for small to medium teams. I have seen it emerged as a natural evolution of a monolith in several places where I worked, where it served us well.<p><a href="https://m.signalvnoise.com/the-majestic-monolith-can-become-the-citadel/" rel="nofollow">https://m.signalvnoise.com/the-majestic-monolith-can-become-...</a></p>
]]></description><pubDate>Wed, 11 Jan 2023 14:40:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=34338939</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=34338939</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34338939</guid></item><item><title><![CDATA[New comment by imankulov in "Don't let dicts spoil your code (2020)"]]></title><description><![CDATA[
<p>Hackbraten is right. When I talk about dicts, I refer to a specific Python data type. Still, the truth is, I struggle to spell "dictionary." Even now, I copied the word from your comment.</p>
]]></description><pubDate>Sun, 26 Jun 2022 12:10:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=31883234</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=31883234</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31883234</guid></item><item><title><![CDATA[New comment by imankulov in "Don't let dicts spoil your code (2020)"]]></title><description><![CDATA[
<p>I'd rather phrase it as "well-defined data structures help maintain your app."  In another comment, leetrout recommended using named tuples. They define a list of their attributes without saying anything about their types, and this may be a perfect choice for some scenarios.</p>
]]></description><pubDate>Sun, 26 Jun 2022 12:07:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=31883212</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=31883212</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31883212</guid></item><item><title><![CDATA[New comment by imankulov in "Don't let dicts spoil your code (2020)"]]></title><description><![CDATA[
<p>Huh, I worked with this architecture, and while it was convenient at first, it became an issue down the road. Here's what we had.<p>- A few times, we inadvertently exposed internal fields. They were not sensitive, just internal. Still, clients discovered and started using them and effectively blocked us from changing the data schema without updating the API version.<p>- A risk of inadvertently exposing sensitive fields. We never had this, but the mere fact that it was too easy to have, kept unnecessary pressure on us.<p>- Adjusting the serialization format for different purposes became a problem. When everything is a dict, it's difficult to bolt in custom serialization logic. We had this issue when we had to support different API versions, different object representations for different clients, or different purposes. For example, when we cache an object, we want to keep all the fields, but when we return it to an object, we need to maintain the subset of them.<p>- Slower onboarding. When a newcomer joins the project, they need to be aware that any database change may leak as an API attribute. They couldn't start working before they saw the whole picture.</p>
]]></description><pubDate>Sun, 26 Jun 2022 11:12:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=31882867</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=31882867</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31882867</guid></item><item><title><![CDATA[New comment by imankulov in "Don't let dicts spoil your code (2020)"]]></title><description><![CDATA[
<p>Yes, the context is Python.</p>
]]></description><pubDate>Sun, 26 Jun 2022 09:19:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=31882343</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=31882343</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31882343</guid></item><item><title><![CDATA[New comment by imankulov in "Don't let dicts spoil your code (2020)"]]></title><description><![CDATA[
<p>Hey, molly0! Do you have a specific example in mind? I'm thinking about how common this use case could be but can't come up with anything.</p>
]]></description><pubDate>Sun, 26 Jun 2022 09:16:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=31882328</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=31882328</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31882328</guid></item><item><title><![CDATA[New comment by imankulov in "Don't let dicts spoil your code (2020)"]]></title><description><![CDATA[
<p>True. Don't slap in types just because you can — add types when you need to work with your data. Most of the time, I worked with systems where my python code *was* the downstream and required data to run some business logic. In that context, types make the most sense.</p>
]]></description><pubDate>Sun, 26 Jun 2022 08:13:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=31882047</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=31882047</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31882047</guid></item><item><title><![CDATA[Don't let dicts spoil your code (2020)]]></title><description><![CDATA[
<p>Article URL: <a href="https://roman.pt/posts/dont-let-dicts-spoil-your-code/">https://roman.pt/posts/dont-let-dicts-spoil-your-code/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=31879015">https://news.ycombinator.com/item?id=31879015</a></p>
<p>Points: 134</p>
<p># Comments: 89</p>
]]></description><pubDate>Sat, 25 Jun 2022 21:51:42 +0000</pubDate><link>https://roman.pt/posts/dont-let-dicts-spoil-your-code/</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=31879015</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31879015</guid></item><item><title><![CDATA[New comment by imankulov in "PEP 483 – The Theory of Type Hints (2014)"]]></title><description><![CDATA[
<p>The standard for type hints in Python is lengthy and detailed PEP-484.<p>PEP-483 is 2x shorter and builds the foundation for this work. It summarizes the typing theory and outlines its guiding principles for Python. I found it helpful to see the bigger picture.</p>
]]></description><pubDate>Mon, 20 Dec 2021 12:21:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=29624054</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=29624054</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29624054</guid></item><item><title><![CDATA[PEP 483 – The Theory of Type Hints (2014)]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.python.org/dev/peps/pep-0483/">https://www.python.org/dev/peps/pep-0483/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=29623855">https://news.ycombinator.com/item?id=29623855</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Mon, 20 Dec 2021 11:57:34 +0000</pubDate><link>https://www.python.org/dev/peps/pep-0483/</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=29623855</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29623855</guid></item><item><title><![CDATA[Avoid Django’s GenericForeignKey (2016)]]></title><description><![CDATA[
<p>Article URL: <a href="https://lukeplant.me.uk/blog/posts/avoid-django-genericforeignkey/">https://lukeplant.me.uk/blog/posts/avoid-django-genericforeignkey/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=27740033">https://news.ycombinator.com/item?id=27740033</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 05 Jul 2021 17:27:31 +0000</pubDate><link>https://lukeplant.me.uk/blog/posts/avoid-django-genericforeignkey/</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=27740033</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27740033</guid></item><item><title><![CDATA[Mau: A Lightweight Markup Language]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.thedigitalcatonline.com/blog/2021/02/22/mau-a-lightweight-markup-language/">https://www.thedigitalcatonline.com/blog/2021/02/22/mau-a-lightweight-markup-language/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=26389249">https://news.ycombinator.com/item?id=26389249</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 08 Mar 2021 18:08:58 +0000</pubDate><link>https://www.thedigitalcatonline.com/blog/2021/02/22/mau-a-lightweight-markup-language/</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=26389249</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26389249</guid></item><item><title><![CDATA[Going Remote for Life]]></title><description><![CDATA[
<p>Article URL: <a href="https://modasserbillah.ml/2020/09/07/going-remote/">https://modasserbillah.ml/2020/09/07/going-remote/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=25916146">https://news.ycombinator.com/item?id=25916146</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 26 Jan 2021 14:34:50 +0000</pubDate><link>https://modasserbillah.ml/2020/09/07/going-remote/</link><dc:creator>imankulov</dc:creator><comments>https://news.ycombinator.com/item?id=25916146</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25916146</guid></item></channel></rss>