<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: black3r</title><link>https://news.ycombinator.com/user?id=black3r</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 23 May 2026 00:10:47 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=black3r" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by black3r in "Uv is fantastic, but its package management UX is a mess"]]></title><description><![CDATA[
<p>We have 257 python dependencies in our production app (over half of them are direct dependencies). We don't have any upper bounds in our pyproject.toml and we just run `uv lock --upgrade` every 2 weeks through GH actions.<p>We have good test coverage so if anything breaks the tests fail + we have AI assisted review process for this -> when GH action creates the upgrade PR, an AI workflow uses a python script to list major and minor version updates, finds and links changelogs, summarizes them, and makes the risk factor analysis for each package based on how we use it in our codebase.<p>It's mostly painless and we don't have to deal with upgrading packages one-by-one, checking which packages are outdated, or having outdated packages. Very rarely something breaks in a way it can't be fixed in our code and we need to wait on a fix from the dependency author (maybe once a year?). And in the past 3 months only one such upgrade required some changes to our code, there were 18 major version bumps in that period.<p>I wish we could do this on the frontend as well (I'm a full stack dev), but we don't have enough tests on frontend for this to work safely. Tests on the backend are easier to write and are more important so I believe every codebase should have them. And if you do, you can just auto-upgrade everything.<p>It really is far easier than you'd think if you haven't tried.</p>
]]></description><pubDate>Fri, 22 May 2026 17:40:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48238999</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=48238999</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48238999</guid></item><item><title><![CDATA[New comment by black3r in "Claude for Small Business"]]></title><description><![CDATA[
<p>Different countries use different definitions of what "small business" or "micro business" is. And people usually use their own local expectations they're used to. I'm not from the US and a company with 100 million revenue is far from a small business to me.<p>In EU where I'm from the micro/small/medium business sizes are tied to both employee count AND revenue. Micro is below 10 employees and below 2 million € revenue, Small is below 50 employees and below 10 million € revenue, Medium is below 250 employees and 50 million € revenue.<p>So if you had 100 million revenue you would be a large business even if you had less than ten people.</p>
]]></description><pubDate>Thu, 14 May 2026 07:38:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48132250</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=48132250</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48132250</guid></item><item><title><![CDATA[New comment by black3r in "Programming Still Sucks"]]></title><description><![CDATA[
<p>The difference with AI is that now generating AI slop is much faster than carefully crafted code. So companies began to prefer AI slop.</p>
]]></description><pubDate>Thu, 07 May 2026 07:18:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48046416</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=48046416</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48046416</guid></item><item><title><![CDATA[New comment by black3r in "Docker 29 has changed its default image store for new installs"]]></title><description><![CDATA[
<p>Also this doesn't just mean more disk space usage, but also longer local build times... for the app I'm working on `exporting to image` takes 71.5 seconds with containerd, without containerd it's 4.3s (the rest of the build takes ~180 seconds). And that's just a 5.76GB image.</p>
]]></description><pubDate>Tue, 05 May 2026 18:50:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=48026798</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=48026798</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48026798</guid></item><item><title><![CDATA[New comment by black3r in "The West forgot how to make things, now it’s forgetting how to code"]]></title><description><![CDATA[
<p>Depends on the complexity of the task. That's what I tried to hint at by also mentioning college-level math. For the high-school level tasks yeah, couple of hours and I'd be as fast as I was in high school again. For the number in another base it could be as quick as less than 1 hour as again that's a simpler task than the other two.<p>For derivations/integrations it'd take more time. Less than what it took me to learn them in the first place, for sure. But still a lot more than 1 hour.<p>Cause I forgot how to "do them" in the first place, which is what the discussion was about in the first place. I still know the "theory" behind, so I can "figure it out" if needed without needing anyone to "instruct" me, or needing "classes" to learn how to do them. But essentially all the "practice" I had back then is forgotten.<p>And again the same goes for code and technology knowledge, which is what the discussion was about in the first place.<p>As a senior developer with 10+ years of experience I've already encountered situations where I needed knowledge I knew I had at some point, but already forgot. In my case as a backend developer working for the same company for 5+ years my favorite example is payments processing. There are tons of special/edge cases - e.g. how a failed recurring payment during a subscription is processed. That's something you set up once, then don't touch for years, and suddenly need to study again if a change is needed. How a subscription goes "past due", what you can do in that case, what your code actually does, how it reverts to correct state once a retried payment follows through, what options you offer a customer if his payment method expired and he wants to switch it, ...<p>And this is also a good example why "domain knowledge" and "code ownership" is a good thing in larger companies. Because under usual circumstances I don't have to deal with these, cause we have a dedicated person who's maintaining the payment-related code. I only fill in in urgent cases happening when he's on vacation.<p>And juniors designing stuff like this AI-first without properly thinking about all these cases won't learn all the edge cases this flow can contain. So if something goes wrong, you end up with nobody who has the "maintainer experience" for that code - you don't have the one person who is knowledgeable about that topic - everyone in your company is in the same spot as me - having to research the topics again to understand them enough to be able to debug the incident which happened.</p>
]]></description><pubDate>Sun, 26 Apr 2026 20:28:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47913997</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=47913997</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47913997</guid></item><item><title><![CDATA[New comment by black3r in "Waymo says can't avoid bike lanes because riders want to be dropped off in them"]]></title><description><![CDATA[
<p>What the actual fuck? Customers' expectations shouldn't matter at all if the things they expect is illegal.<p>And this is already a solved problem.<p>The city I live in (Bratislava, Slovakia) has some pedestrian-only zones in the "old town", and if you're in one of them, calling an Uber/Bolt forces you to pick a pickup spot where cars can go...<p>(arguably this still has issues with Uber/Bolt allowing you to choose bus stops as pickup spots, which is explicitly illegal - only buses can stop on bus stops, but it's still better than driving onto a road which does not allow cars in the first place).<p>EDIT: i mistakenly thought this was about driving on dedicated bike paths, idk why, but this is still a solved problem, the applications already allow to designate some roads as places which can't be picked as pickup/dropoff points...</p>
]]></description><pubDate>Sun, 26 Apr 2026 19:37:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47913316</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=47913316</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47913316</guid></item><item><title><![CDATA[New comment by black3r in "The West forgot how to make things, now it’s forgetting how to code"]]></title><description><![CDATA[
<p>> Knowledge comes basically from manual trial/error almost daily.<p>This is the important statement, although I'd swap the word "knowledge" for "experience" here. You can gain "knowledge" from books, but only trial & error will give you experience to know "which" knowledge to use in which situations.<p>And what's important about this in the context of working with AI is the "error" part.<p>You have to experience errors to become truly experienced. And part of the experience is to recognize when you're about to make an error - to avoid it.<p>AI-driven processes mess up our natural trial & error learning curve in multiple ways:<p>- the AI push forces us to ship features faster (cause if we don't, our competitors will), reviews are sloppier, we discover errors later on, the feedback loop gets longer...<p>- using AI to debug and fix errors means we spend less time understanding what the error was about, which means we learn less about how to avoid the error in the first place...<p>- AI itself sounds overly confident, so reading its outputs without previous experience you may be less likely to recognize when it's making an error, which makes it harder for you to recognize when you're making an error trusting it...<p>On the other hand, this last point I tried to make is also why I don't think avoiding AI completely is a good strategy. Whether we like it or not, AI is becoming a part of developer's workflow. And as such, we also need to learn the trial & error process of using AI - what makes AI make errors and how to prompt it to avoid that.</p>
]]></description><pubDate>Sun, 26 Apr 2026 19:07:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=47912948</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=47912948</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47912948</guid></item><item><title><![CDATA[New comment by black3r in "The West forgot how to make things, now it’s forgetting how to code"]]></title><description><![CDATA[
<p>Multiplication is elementary school math which doesn't require any thinking and the learned approach is simple. You can't really compare the simple stuff that's taught to kids, like basic multiplication or riding a bike with stuff that requires domain-specific knowledge and experience.<p>Think more stuff like "find the angle of lines defined by (x-4y-1=0) and (x-y-2=0)", "write the number 2026 in base 7", "solve an equation sin^2(x) - sin(x) = 0".<p>I plucked these from our country's high school final exam from this year. Back when I was in high school, I did mine in 60 minutes without an error when the time limit is 150 minutes and I intuitively immediately knew how to approach each task since the moment I saw it. Also all needed formulas are supplied, you don't need to remember any of them.<p>I plucked these because for these I don't have the immediate "know how" now, I still understand the topics, and could solve them with enough time, but it would require some thinking and thus I would be slower at solving them than when I was in high school, even though I'm pretty sure I could still ace it in the 150 minute time limit.<p>But reality goes beyond high schoool... College-level math, like derivations/integrations, sums, algebraic proofs, is even harder and solving some of them could take me hours when I could do them in minutes when I was in college.<p>With code it's the same. I could solve simple Python/Pascal/C++ high school level tasks as fast or faster than when I was in high school, even if I didn't write any code for a couple of years. But we also had assembly class in college, and I would struggle at assembly if I had to code it now, 10+ years later, even though I didn't struggle with it back then.</p>
]]></description><pubDate>Sun, 26 Apr 2026 17:36:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47912127</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=47912127</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47912127</guid></item><item><title><![CDATA[New comment by black3r in "The West forgot how to make things, now it’s forgetting how to code"]]></title><description><![CDATA[
<p>For me AI mostly reduces time effort. AI types code faster than I do, looks up stuff on the internet faster than I do, debugs faster than I do, but doing those never required much "brain effort" from me.<p>What does require "brain effort" from me is making educated decisions. Mostly during planning to figure out which pros/cons of each possible approach are actually relevant for our situation - AI does this poorly, makes lots of wrong assumptions if you don't steer it correctly, and noticing these + correcting AI on them requires "brain effort" too. Then the part of code review where you think about what can go wrong. AI still sucks at figuring out edge cases. It doesn't "know" the entire codebase like I do, its context only has "the parts of codebase deemed relevant".<p>Before AI I could jump from 30 minutes of hard thinking into an hour of coding during which my brain essentially rested, before returning to hard thinking again. Nowadays those hour-long coding sessions turn into 5-10 minutes of watching AI do something.<p>So for me using AI doesn't "free up brain juice", it instead makes me use my "brain effort" more, and in a workplace environment gives me less time to rest and makes me more tired, cause nowadays bosses expect us to work faster + colleagues working faster means more review requests.</p>
]]></description><pubDate>Sun, 26 Apr 2026 17:10:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47911908</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=47911908</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47911908</guid></item><item><title><![CDATA[New comment by black3r in "My Experience as a Rice Farmer"]]></title><description><![CDATA[
<p>I hear sentiments about farming from lots of burnout software developers.<p>I always wonder what made them become developers at all. Cause my primary motivation for selecting a job was that I explicitly didn't want to ever work manually, I knew that since early childhood and it still didn't change even after 2 burnouts. My secondary motivation was that I liked working with machinery/computers.<p>Also when I started coding, it immediately felt like my passion. And the thing I love most about coding is that mostly all changes I make have instantly visible results. I couldn't imagine working a job where I had to plant a seed and then wait a week to see if it sprouts.<p>Also what I love about development is that with modern Docker/Kubernetes setups you can make the environment where your code runs pretty predictable. And with proper backups configured and backup restore testing you aren't really worried about losing the stuff you worked on for months. Meanwhile while farming you can't predict how much sun is gonna shine or how much rain you're gonna get. And you can't prepare for natural disasters which can come anytime and ruin your crops.<p>So I wonder if it's all just people who never loved software engineering and just went into it for money, and now that they have money after years of working they start looking for their true passion.</p>
]]></description><pubDate>Tue, 07 Apr 2026 10:20:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47672970</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=47672970</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47672970</guid></item><item><title><![CDATA[New comment by black3r in "LinkedIn is searching your browser extensions"]]></title><description><![CDATA[
<p>that's basically how it already works...<p>extensions choose on which site they're active and if they provide any available assets (e.g. some extensions modify CSS of the website by injecting their CSS, so that asset is public and then any website where the extension is active can call fetch("chrome-extension://<extension_id>/whatever/file/needed.css" if it knows the extension ID (fixed for each extension) and the file path to such asset... if the fetch result is 404, it can assume the extension is not installed, if the result is 200 it can assume the extension is installed.<p>This is what LinkedIn is doing... they have their own database of extension IDs and a known working file path, and they are just calling these fetches... they have been doing it for years, I've noticed it a few years back when I was developing a chrome extension which also worked with LinkedIn, but back then it was less than 100 extensions scanned, so I just assumed they want to detect specific extensions which break their site or their terms of use... now it's apparently 6000+ extensions...</p>
]]></description><pubDate>Thu, 02 Apr 2026 18:04:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47617972</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=47617972</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47617972</guid></item><item><title><![CDATA[New comment by black3r in "Modern CSS Code Snippets: Stop writing CSS like it's 2015"]]></title><description><![CDATA[
<p>You can have decoupled Controllers from Views using React. That's the basis of the "original" Flux/Redux architecture used by React developers 10+ years ago when React was just beginning to get traction.<p>A flux/redux "Store" acts as a Model -> contains all the global state and exactly decides what gets rendered. A flux/redux "Dispatcher" acts as a Controller. And React "Components" (views) get their props from the "Store" and send "events" to "dispatcher", which in turn modifies the "Store" and forces a redraw.<p>Of course they aren't "entirely decoupled" because the view still has to call the controller functions, but the same controller action can be called from multiple views, and you can still design the architecture from Model, through Controller (which properties can change under what conditions) and then design the Views (where the interactions can happen).</p>
]]></description><pubDate>Mon, 16 Feb 2026 11:45:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47033881</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=47033881</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47033881</guid></item><item><title><![CDATA[New comment by black3r in "MinIO repository is no longer maintained"]]></title><description><![CDATA[
<p>in theory "maintenance mode" should mean that they still deal with security issues and "no longer maintained" that they don't even do that anymore...<p>unless a security issue is reported it does feel very much the same...</p>
]]></description><pubDate>Fri, 13 Feb 2026 10:00:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47000960</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=47000960</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47000960</guid></item><item><title><![CDATA[New comment by black3r in "I miss thinking hard"]]></title><description><![CDATA[
<p>My experience is similar, but I feel I'm actually thinking way harder than I ever was before LLMs.<p>Before LLMs once I was done with the design choices as you mention them - risks, constraints, technical debt, alternatives, possibilities, ... I cooked up a plan, and with that plan, I could write the code without having to think hard. Actually writing code was relaxing for me, and I feel like I need some relax between hard thinking sessions.<p>Nowadays we leave the code writing to LLMs because they do it way faster than a human could, but then have to think hard to check if the code LLM wrote satisfies the requirements.<p>Also reviewing junior developers' PRs became harder with them using LLMs. Juniors powered by AI are more ambitious and more careless. AI often suggests complicated code the juniors themselves don't understand and they just see that it works and commit it. Sometimes it suggests new library dependencies juniors wouldn't think of themselves, and of course it's the senior's role to decide whether the dependency is warranted and worthy of being included. Average PR length also increased. And juniors are working way faster with AI so we spend more time doing PR reviews.<p>I feel like my whole work somehow from both sides collapsed to reviewing code = from one side the code that my AI writes, from the other side the code that juniors' AI wrote, the amount of which has increased. And even though I like reviewing code, it feels like the hardest part of my profession and I liked it more when it was balanced with tasks which required less thinking...</p>
]]></description><pubDate>Wed, 04 Feb 2026 22:25:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46892754</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=46892754</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46892754</guid></item><item><title><![CDATA[New comment by black3r in "What came first: the CNAME or the A record?"]]></title><description><![CDATA[
<p>> Literally every datacenter in the world was going to fail on this change<p>I would expect most datacenters to use their own local recursive caching DNS servers instead of relying on 1.1.1.1 to minimize latency.</p>
]]></description><pubDate>Mon, 19 Jan 2026 23:41:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46686148</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=46686148</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46686148</guid></item><item><title><![CDATA[New comment by black3r in "What came first: the CNAME or the A record?"]]></title><description><![CDATA[
<p>> 4. Ends up in test environment for, what, a month.. nothing using getaddrinfo from glibc is being used to test this environment or anyone noticed that it was broken<p>"Testing environment" sounds to me like a real network real user devices are used with (like the network used inside CloudFlare offices). That's what I would do if I was developing a DNS server anyway, other than unit tests (which obviously wouldn't catch this unless they were explicitly written for this case) and maybe integration/end-to-end tests, which might be running in Alpine Linux containers and as such using musl. If that's indeed the case, I can easily imagine how noone noticed anything was broken. First look at this line:<p>> Most DNS clients don’t have this issue. For example, systemd-resolved first parses the records into an ordered set:<p>Now think about what real end user devices are using: Windows/macOS/iOS obviously aren't using glibc and Android also has its own C library even though it's Linux-based, and they all probably fall under the "Most DNS clients don't have this issue.".<p>That leaves GNU/Linux, where we could reasonably expect most software to use glibc for resolving queries, so presumably anyone using Linux on their laptop would catch this right? Except most distributions started using systemd-resolved (most notable exception is Debian, but not many people use that on desktops/laptops), which is a locally-cached recursive DNS server, and as such acts as a middleman between glibc software and the network configured DNS server, so it would resolve 1.1.1.1 queries correctly, and then return the results from its cache ordered by its own ordering algorithm.</p>
]]></description><pubDate>Mon, 19 Jan 2026 23:36:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=46686096</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=46686096</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46686096</guid></item><item><title><![CDATA[New comment by black3r in "Can Bundler be as fast as uv?"]]></title><description><![CDATA[
<p>I've been using pyenv for a decade before uv and it wasn't a "major pain" either. But compared to uv it was infinitely more complex, because uv manages python versions seamlessly.<p>If python version changes in an uv-managed project, you don't have to do any extra step, just run "uv sync" as you normally do when you want to install updated dependencies. uv automatically detects it needs a new python, downloads it, re-creates the virtual environment with it and installs the deps all in one command.<p>And since it's the command which everyone does anytime a dependency update is required, no dev is gonna panic why the app is not working after we merge in some new code which requires newer python cause he missed the python update memo.</p>
]]></description><pubDate>Fri, 02 Jan 2026 09:58:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=46463245</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=46463245</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46463245</guid></item><item><title><![CDATA[New comment by black3r in "PNG in Chrome shows a different image than in Safari or any desktop app"]]></title><description><![CDATA[
<p>this picture does show differently in Chrome and Safari, but if I analyze it using the methods you did I arrive at a different result - I don't see an iHDR chunk there, instead I see a gAMA chunk and if I remove it with pngcrush it shows normally in Chrome.<p>maybe you linked a different picture?</p>
]]></description><pubDate>Sat, 27 Dec 2025 18:39:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=46404052</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=46404052</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46404052</guid></item><item><title><![CDATA[New comment by black3r in "2026 Apple introducing more ads to increase opportunity in search results"]]></title><description><![CDATA[
<p>There have been ads in App Store for a long time. The upcoming change is that they will also appear further down in search results, right now they only show on top...</p>
]]></description><pubDate>Fri, 19 Dec 2025 11:44:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=46324747</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=46324747</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46324747</guid></item><item><title><![CDATA[New comment by black3r in "Getting bitten by Intel's poor naming schemes"]]></title><description><![CDATA[
<p>There are GPUs from 3 different generations in that list... Quadro 6000 is an old Fermi from 2010, Quadro RTX6000 is Turing from 2018, RTX6000 Ada is Ada from 2022...<p>Oh and there's also RTX PRO 6000 Blackwell which is Blackwell from 2025...</p>
]]></description><pubDate>Fri, 19 Dec 2025 11:40:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=46324715</link><dc:creator>black3r</dc:creator><comments>https://news.ycombinator.com/item?id=46324715</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46324715</guid></item></channel></rss>