<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: nasretdinov</title><link>https://news.ycombinator.com/user?id=nasretdinov</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 15 Jun 2026 03:39:37 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=nasretdinov" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by nasretdinov in "Orthodox C++"]]></title><description><![CDATA[
<p>Such a missed opportunity to call it C <orthodox cross emoji></p>
]]></description><pubDate>Sat, 13 Jun 2026 15:39:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48518347</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48518347</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48518347</guid></item><item><title><![CDATA[New comment by nasretdinov in "Queues Don't Fix Overload (2014)"]]></title><description><![CDATA[
<p>Similar things apply to buffered channels in Go: buffering frequently hides deadlocks, etc, but you don't observe them until the buffer is full. So buffers generally should be kept either as zero or very small to be able to catch synchronisation issues early</p>
]]></description><pubDate>Thu, 11 Jun 2026 17:54:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48493929</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48493929</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48493929</guid></item><item><title><![CDATA[New comment by nasretdinov in "How much do amd64 microarchitecture levels help in Go?"]]></title><description><![CDATA[
<p>I had to look hard to find any AI-generated images and I've only found one at the very top. I guess I've just developed "banner blindness" because I didn't even register that image...</p>
]]></description><pubDate>Tue, 09 Jun 2026 15:52:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48462721</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48462721</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48462721</guid></item><item><title><![CDATA[New comment by nasretdinov in "Wow, if it's this easy in 1998, I bet it'll be even easier in 2026"]]></title><description><![CDATA[
<p>Symbian phones were also based on WebKit, however it wasn't nearly as usable due to many factors, mostly because it emulated mouse pointer (and you controlled it via the joystick) and didn't provide the pinch-to-zoom fluidity of the iPhone Safari. Also iPhone supported most of the major fonts used on the web, had font smoothing, etc. I've used both Symbian WebKit and Safari on first iPhone, and they aren't even close even though they're based on the same underlying browser tech.</p>
]]></description><pubDate>Mon, 08 Jun 2026 09:10:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48442965</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48442965</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48442965</guid></item><item><title><![CDATA[New comment by nasretdinov in "Moving beyond fork() + exec()"]]></title><description><![CDATA[
<p>Fork becomes more and more expensive the higher the RSS of the process, roughly 1ms per 1Gb of the process size with 4kb pages. Given that modern servers can easily support 1-2Tb of RAM the fork() part can easily take several hundred milliseconds, blocking everything in the meantime. So for larger programs you kinda have to have a "fork helper" process if you need to execute external programs for some reason.</p>
]]></description><pubDate>Sat, 06 Jun 2026 16:12:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48426383</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48426383</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48426383</guid></item><item><title><![CDATA[New comment by nasretdinov in "Did Claude increase bugs in rsync?"]]></title><description><![CDATA[
<p>Regardless of the claims made in this analysis, I've personally observed that there are indeed more bugs (or more subtle issues, like nonsensical error messages) being shipped when using LLMs, but not _really_ because LLMs suck, but because you're spending less time thinking about the problem, and you subsequently miss more edge cases, etc.<p>The best approach I've tried that actually increases quality (and _may_ speed up development) is to write ~80% of the code yourself and then ask LLM to review it thoroughly. While it's doing its thing you're also thinking about the code and reviewing it yourself in parallel. You then merge the findings and fix stuff worth fixing. At this point the authorship of the code is still mostly yours, you _understand_ the system and you ship fewer bugs, slightly faster than otherwise. It's a moderate improvement to the workflow, but it actually doesn't cost nearly as much either, and definitely doesn't produce rage at the machine from the slop. The only downside is that it requires lots of discipline, and it's a relatively rare commodity among software engineers these days.</p>
]]></description><pubDate>Sat, 06 Jun 2026 07:38:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48422431</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48422431</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48422431</guid></item><item><title><![CDATA[New comment by nasretdinov in "Go Experiments Explained"]]></title><description><![CDATA[
<p>I'm really looking forward to SIMD becoming standard in Go. It might sound very niche, however SIMD intrinsics (which is different from how they are available now, which is via non-inlinable assembly) allow to generate similar vector code to C intrinsics, with very little in terms of overhead due to bounds checking, etc. This allows to write programs that are highly optimised for modern CPU and get maybe 80% of performance compared to the same variant in C. This is much better than the current state where C typically outperforms Go by at least 2x/3x, and SIMD typically allows you to get 10x or more speedup already, which gives UNLIMITED POWER to Go when CPU performance is a bottleneck</p>
]]></description><pubDate>Fri, 05 Jun 2026 07:25:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=48409183</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48409183</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48409183</guid></item><item><title><![CDATA[New comment by nasretdinov in "Every Byte Matters"]]></title><description><![CDATA[
<p>Ideally you'd want to go further and actually store the is_alive as a bit mask and use SIMD instructions to filter out zeroes for example.</p>
]]></description><pubDate>Wed, 03 Jun 2026 14:19:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=48384501</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48384501</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48384501</guid></item><item><title><![CDATA[New comment by nasretdinov in "Local Git remotes"]]></title><description><![CDATA[
<p>Worktrees are different checkouts of the same repo. Clone with --reference is a separate repo altogether, with its own .git and worktree.</p>
]]></description><pubDate>Sat, 30 May 2026 12:40:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=48335548</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48335548</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48335548</guid></item><item><title><![CDATA[New comment by nasretdinov in "Local Git remotes"]]></title><description><![CDATA[
<p>You can also have multiple independent git repos that don't duplicate the full object store, via git clone --reference. It's less relevant in the container era, but otherwise it can save a lot of time and disk space when cloning repos repeatedly</p>
]]></description><pubDate>Fri, 29 May 2026 13:51:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48323111</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48323111</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48323111</guid></item><item><title><![CDATA[New comment by nasretdinov in "Go: Support for Generic Methods"]]></title><description><![CDATA[
<p>We already have monads at home (return X, err)</p>
]]></description><pubDate>Wed, 27 May 2026 18:03:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48298052</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48298052</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48298052</guid></item><item><title><![CDATA[New comment by nasretdinov in "Go: Support for Generic Methods"]]></title><description><![CDATA[
<p>Generic interfaces are going to be implemented later too if I'm reading correctly. So no real surprises there :). I guess the only surprise yet is that generic interfaces aren't supported, so generic methods physically can't satisfy any interface</p>
]]></description><pubDate>Wed, 27 May 2026 15:26:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=48295755</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48295755</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48295755</guid></item><item><title><![CDATA[New comment by nasretdinov in "Go: Support for Generic Methods"]]></title><description><![CDATA[
<p>Lack of generic methods was really surprising to me when I was first trying to use generics in Go. Nice to see it being actually implemented</p>
]]></description><pubDate>Wed, 27 May 2026 13:22:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48293927</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48293927</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48293927</guid></item><item><title><![CDATA[New comment by nasretdinov in "The Best Engineers Write Less Code"]]></title><description><![CDATA[
<p>Very rarely you're bottlenecked by typing speed. If you truly are, and you are already typing at like 200 wpm, then you are probably doing something at the wrong abstraction level. E.g. for a very simple example when making a CRUD admin, but implementing everything from the first principles for each entity, not making helper functions to render generic forms, handle add/update/remove operations uniformly, etc. Of course LLMs can help you generate such code faster, but if you then need to change something systematically in the future it'll take longer and will definitely be less consistent / more buggy.</p>
]]></description><pubDate>Wed, 27 May 2026 07:23:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48290847</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48290847</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48290847</guid></item><item><title><![CDATA[New comment by nasretdinov in "Migrating from Go to Rust"]]></title><description><![CDATA[
<p>Being able to just return {}, err when returning an empty struct from a function sounds really exciting and encouraging to use pointers less, which is really good for nil safety if anything</p>
]]></description><pubDate>Mon, 25 May 2026 08:43:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48264732</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48264732</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48264732</guid></item><item><title><![CDATA[New comment by nasretdinov in "Silk: Open-source cooperative fiber scheduler"]]></title><description><![CDATA[
<p>Looks really interesting. I assume this suggests that ClickHouse is going to gradually switch to using this library for network and I/O, thus addressing the main weakness (in my mind) of C++ thread-per-connection servers, which is, they (surprisingly!) create too many threads and can't really handle more than, say, a thousand active connections at the same time. It mostly matters for async INSERTs in this case of course, not for SELECTs, although generally it applies to both.</p>
]]></description><pubDate>Sun, 24 May 2026 09:18:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=48255812</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48255812</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48255812</guid></item><item><title><![CDATA[New comment by nasretdinov in "We made our filesystem 47× faster by deleting it"]]></title><description><![CDATA[
<p>If your problem could be solved without FUSE, it probably should!</p>
]]></description><pubDate>Sat, 23 May 2026 19:54:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=48250849</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48250849</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48250849</guid></item><item><title><![CDATA[New comment by nasretdinov in "PHP's Oddities"]]></title><description><![CDATA[
<p>if("0") {} being equivalent to if(false) {} still gives me nightmares even though I've stopped using PHP for at least 6 years now :)</p>
]]></description><pubDate>Sat, 23 May 2026 16:08:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48248819</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48248819</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48248819</guid></item><item><title><![CDATA[New comment by nasretdinov in "Rubish: A Unix shell written in pure Ruby"]]></title><description><![CDATA[
<p>I might be in a minority, but I actually prefer fish as an interactive shell and bash (or plain /bin/sh) for scripting, if anything because that's what I'm used to :), and it's portable</p>
]]></description><pubDate>Sat, 23 May 2026 15:50:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=48248676</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48248676</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48248676</guid></item><item><title><![CDATA[New comment by nasretdinov in "Europe built sovereign clouds to escape US control. Forgot about the processors"]]></title><description><![CDATA[
<p>Quite an odd thing for a British journal to pretend ARM doesn't exist...</p>
]]></description><pubDate>Sat, 16 May 2026 12:08:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48159458</link><dc:creator>nasretdinov</dc:creator><comments>https://news.ycombinator.com/item?id=48159458</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48159458</guid></item></channel></rss>