MurphyA/hacker-news huggingface dataset:
Don't use Cloudflares 1.1.1.1 on servers
by tmikaeld | 2025-05-08 06:15:33+00:00
We've gotten rate-limited out of the blue on clustered development servers in the past 3 years now, this last one was on servers we setup 830 days ago, before we knew that getting rate-limited/banned on DNS servers where even possible. The worst thing about the last incident was that we entered a death spiral, DNS resolution failing started a logging job, that failed (due to DNS resolution failing to call log server) that then started a job about the failing DNS resolution.. You get the gist..

Of course, this is an issue of engineering and code, not only a rate-limiting issue.

However, many developers rely and depend on upstream DNS resolution to "Just Work" when you add it to a server, which has been the case with Googles DNS servers for the past 15+ years that I've been a sysop. I'm just hoping that this time, this will get SOME attention, because either you want dev-ops to use Cloudflare DNS on servers or you don't - and if you don't - there should be an official warning that this WILL happen, you WILL get rate-limited eventually.
by seanhunter | 2025-05-08 06:16:34+00:00
My copy of K&R disagrees with you that implicit conversion didn’t exist in C. See section 2.7 “Type conversions”.

“Implicit arithmetic conversions work much as expected. In general, if an operator like + or * that takes two operands (a binary operator) has operands of different types, the ``lower'' typekis promoted to the ``higher'' type before the operation proceeds.”

It goes on including giving a table of all the conversions and a set of heuristics which normally apply.
by josephg | 2025-05-08 06:17:41+00:00
> Literally think about it. How else do you merge two structs if not using inheritance?

What? Using multiple inheritence? That's one of the worst ideas I've ever seen in all of computer science. You can't just glue two arbitrary classes together and expect their invariants to somehow hold true. Even if they do, what happens when both classes implement a method or field with the same name? Bugs. You get bugs.

I've been programming for 30 years and I've still never seen an example of multiple inheritance that hasn't eventually become a source of regret.

The way to merge two structs is via composition:

struct C { a: A, b: B, }

If you want to expose methods from A or B, either wrap the methods or make the a or b fields public / protected and let callers call c.a.foo().

Don't take my word for it, here's google's C++ style guide[1]

> Composition is often more appropriate than inheritance.

> Multiple inheritance is especially problematic, because it often imposes a higher performance overhead (in fact, the performance drop from single inheritance to multiple inheritance can often be greater than the performance drop from ordinary to virtual dispatch), and because it risks leading to "diamond" inheritance patterns, which are prone to ambiguity, confusion, and outright bugs.

> Multiple inheritance is permitted, but multiple implementation inheritance is strongly discouraged.

[1] https://google.github.io/styleguide/cppguide.html#Inheritanc...
by davedx | 2025-05-08 06:18:37+00:00
Ha. I just finished a huge rewrite at work from sync SQLAlchemy to async SQLAlchemy, because the async version uses a totally different API (core queries) to sync. So this implies if I want type checking I need to use a different ORM and start again?

I love how Python makes me so much faster due to its dynamic nature! Move fast, break things!
by motorest | 2025-05-08 06:19:28+00:00
> This way of thinking is how we end up with a ton of spending and not a ton of results.

"Ton of spending" are weasel words. "Not a ton of results" is already the problem.

If your school system fails to teach kids how to read after 3 years, this is a school system that fails at it's primary and most basic responsibility. These third-graders are not the problem, they are the canary in the coal mine.

Advocating for holding back third graders and expelling underperformers is a kin to advocate for getting rid of canaries because they are a nuisance when assessing health and safety.
by aaravchen | 2025-05-08 06:19:43+00:00
Not sure what OP was referring to, but snaps are indeed a ridiculous problem.

There's no control of when snaps update, Ubuntu has explicitly said they will never add this.

There was no way to disable snap auto-updates until just last year(-ish?) when Firefox finally announced they would no longer support snaps and started telling people how to tear them out and replace them with native packages or Flatpaks. Low-and-behold, Ubuntu suddenly got the feature to disable automatic snap updates. After saying explicitly they would never allow it for years, and telling high-uptime users to instead block snap daemon network access via the firewall to avoid it.
by antfarm | 2025-05-08 06:19:59+00:00
Good memories! Back in the days I used Kaleidoscope to style my PowerMac (System 7.5) to look like BeOS, but most importantly, I had an extension that gave me the column browser in the Finder that I had seen on the NeXT Cubes at university. In most courses, I was the only student who used a Mac for homework assignments.
by bad_username | 2025-05-08 06:20:09+00:00
Try Roo code. It has the least "magic" compared to other solutions, down to having no subscription (you plug your own API key and go). It provides full control and visibity of what it does, you see the context window size and the cost of the conversation at all times. This product is the closest to being an honest "automation of what would be manual copying and pasting" and is a great way to explore the possibilities.
by simion314 | 2025-05-08 06:21:30+00:00
Someone asked here examples of what people are using that triggers the censorship, I gave you example of legal,, moral and normal content because the implication is that you only get censored if you are trying to do illegal stuff or adult stuff.

If you only use it for code you will not see the censorship that often, though Gemini once refused to write a SQL DELETE because it is to dangerous.
by kassner | 2025-05-08 06:22:47+00:00
I think that depends on the ratio between detected and undetected fraud. Some fraud will only be detected once they find no one to pay for loans, or when the person being collected has go thru an insurmountable bureaucracy to prove they never enrolled it.

Given the evolution of the technology, I’d say 0.21% is neither static and guaranteed to raise significantly in the to near future if the identification issues don’t get solved overnight.
by adeon | 2025-05-08 06:23:06+00:00
Is there any reliable source for NSA paying Rovio other than this random bar discussion? Not that I don't believe you or that I'm naive about NSA and the power of money, but I looked around news in 2014 and the accusations against Rovio specifically are a bit different flavor. It seems that Rovio was oversharing data to ad networks (Millennial Media comes up a lot), and NSA likely slurped data from the advertising companies. This bar banter is suggesting that NSA had some kind of arrangement with Rovio directly instead, and Rovio willingly went along.

Or alternatively, do you feel the Rovio employee's blabbering was talking about an actual, real NSA deal with Rovio, or was it more like a bar joke and direct NSA co-operation was not really implied? (e.g. "we know our security is bad, but these ad companies pay us $XX million to not use encryption so it's sorta like NSA pays us to keep it that way sips beer").

I'm interested, because if that is an actual thing that happened, then that's an example of NSA paying a Finnish company $$$ to weaken their security, and the Finnish company willingly agreeing to that. Is it in NSA's Modus Operandi to approach and then pay foreign companies to do this sort of thing?

Your comment is describing it in few words, but to me it sounds like it maybe wasn't implying an actual NSA direct co-operation, more like someone doing bar banter and being entirely serious. But that's just me trying to guess tone.

(I'm Finnish. I want to know if Rovio has skeletons in their closet. So I can roast them.)
by liampulles | 2025-05-08 06:23:16+00:00
Usually if I want to code a ticket, I'll plan the components out into a TODO list, put some focus music on, and try and enter a flow state where I can stream through the code. Using these AI autocompletes really breaks up that flow for me. So I don't really like the autocomplete stuff.

I have found Cursor sort of useful for aiding in refactors, where I need to e.g. refactor dozens of function calls to move to a new generic function or something. So stuff where it is more than just a find and replace. I've also used it a bit for programming languages I'm not familiar with, though I feel it hinders my learning of the language so I try to avoid that.

I use chat based stuff also to do these Input -> ? -> Output kind of things for data conversion or refactorings, I also use it a lot for generating more involved SQL (which I'm not very good at).
by rixed | 2025-05-08 06:23:36+00:00
I believe you just summed up 90% of popular wisdom about software engineering.

With enough patience you will see many fads pass twice like a tide raising and falling. OOP, runtime typing, schema-less databases and TDD are the first to come to mind.

I feel "self-describing" data formats and everything agile are fading already.

Very few ideas stick, but some do: I do not expect GOTO to ever come back, but who knows where vibe coding will lead us :)
Show HN: Odyssea AI to decode your Subconscious mind
by tanpaska | 2025-05-08 06:23:42+00:00
Hi HN community!

I created Odyssea because I am tired of going through the same life cycles: anxiety, feeling "not good enough," not feeling safe in relationships etc

Through therapy, I learned that it all comes from subconscious patterns and they can be changed. But it takes ages with weekly sessions, and it's expensive.

The goal of my app is to speed up the process: find the patterns faster, understand where they come from, and use hypnosis to reprogram them.

What do you think?
by const_cast | 2025-05-08 06:24:06+00:00
You know what, I'm gonna say it: skinny jeans were never flattering, especially so for men. Even worse when they were low-rise. You're telling me I get to look like I'm shorter, fatter, and have skinny little chicken legs? Well... don't sign me up.

I'm very pleased that flares and high(er)-rise pants are coming back, kinda. With worse materials, unfortunately. Now if only we can have colors that aren't some variation of gray or blue...
by azibi | 2025-05-08 06:24:16+00:00
Intel Geti is part of the Open Edge Platform: a modular platform that simplifies the development, deployment and management of edge and AI applications at scale.

Intel® Geti™ enables anyone to build computer vision AI models in a fraction of the time and with minimal data. The software provides you with a seamless, end-to-end workflow to prepare state-of-the-art computer vision models in minutes.

Key features: - Interactive Model Training - Smart Annotations - Visual Prompting - Multiple Computer Vision Tasks - Task Chaining - Model Evaluation - Production-Ready Models

Seems to me like a promising MLOPS alternative to platforms like Roboflow.
by aaravchen | 2025-05-08 06:25:47+00:00
dpkg grew knowledge of Source lists suddenly?

If you're installing software from Debian/Ubuntu repos, you can only use aptitude or apt to my knowledge. Other tools give you the ability to install DEB files you already have, and manage what's on your system currently. And aptitude and apt are both well known for never having had a "stable" scriptable interface. In fact they themselves tell you that their commands are not stable and should not be used for scripting, despite no alternative mode or application existing.

Recently Ubuntu moved to apt 3 as well, which massively overhauled the tool from apt 2. All those scripts people wrote to use apt 2 (because there was no alternative) broke recently when they now had to use apt 3.
by AstralStorm | 2025-05-08 06:26:03+00:00
They just cannot access any field in the class itself. Which means... the default implementations fail to actually implement anything but the simplest methods or you need to expose API-private things via getters violating open-closed principle.

(If you merge multiple interfaces, the implementations of the methods have to match. You end up with even more special getters for each one sometimes.)
by surfingdino | 2025-05-08 06:28:07+00:00
What annoys me is that every programmers who wish their favourite language / feature was as popular as Python and they choose to implement it in Python to make Python "better". Python was created as a dynamically typed language. If you want a language with type checking, there are plenty of others available.

Rust devs in particular are on a bend to replace all other languages by stealth, which is both obviously visible and annoying, because they ignore what they don't know about the ecosystem they choose to target. As cool as some of the tools written for Python in Rust are (ruff, uv) they are not a replacement for Python. They don't even solve some annoying problems that we have workarounds for. Sometimes they create new ones. Case in point is uv, which offers custom Docker images. Hello? A package manager is not supposed to determine the base Docker image or Python version for the project. It's a tool, not even an essential one since we have others, so know your place. As much as I appreciate some of the performance gains I do not appreciate the false narratives spread by some Rust devs about the end of Python/JavaScript/Golang based on the fact that Rust allowed them to introduce faster build tools into other programming languages' build chains. Rust community is quickly evolving into the friends you are embarrassed to have, a bit like any JVM-based language that suddenly has a bunch of Enterprise Java guys showing up to a Kotlin party and telling everyone "we can be like Python too...".
by nicbou | 2025-05-08 06:28:26+00:00
I just finished reading "Careless People" and the tone is shockingly similar to the one Zuckerberg loved to use. It reminds me of that Silicon Valley scene where every startup wants to "make the world a better place".

As someone who is both expected to keep creating information to train AI while being stripped from the fruit of my labour by it, I find it sickening.
by ramaro | 2025-05-08 06:29:55+00:00
This looks really interesting and great job on the docs! I need to give it a shot but the first question that comes to mind is if mycoria exposes the full node in the network, requiring the use of a firewall to restrict access to ports, etc? Asking because this is something that is required in yggdrasil: https://yggdrasil-network.github.io/faq.html#will-my-machine...
by anonymousDan | 2025-05-08 06:31:15+00:00
Pretty incoherent article. Not sure what point they are trying to make about the threat model of SGX. SGX was/is a groundbreaking attempt to solve a very difficult problem IMO. TEEs are still an active area of research that has benefited massively from the availability of an actual implementation in mainstream processors. And most other CPU manufacturers are also offering their own flavour of TEE, many of which have learned lessons from SGX.
by dehrmann | 2025-05-08 06:31:31+00:00
> Stock buybacks are substantially equivalent to dividends

There's a whole theory on this:

https://www.investopedia.com/terms/d/dividendirrelevance.asp

The easy way to see it is if all shareholders reinvest dividends, it's the same as a share buyback, only with the broker buying shares on your behalf rather than the company, and your ownership of the company includes a bonus fractional share.

Dividends are also a bit of an accounting game. You can pay yourself a "dividend" whenever you want buy selling shares. This is only 95% true, but if your share in a company just entitled you to 65 cents, the share is probably worth about 65 cents less since the money came from somewhere.
by elevaet | 2025-05-08 06:32:50+00:00
I had a similar experience, and also have zero regrets about missing out on gains. The baked-in energy wastage and the scams and memes were a complete turnoff. That's not the way I want to get rich. Similarly I wouldn't invest in an arms manufacturer or a plastic bag company. Money that doesn't align with your values is just bad mojo.
by olavgg | 2025-05-08 06:34:00+00:00
There is a company delivering a data platform for the Industry 4.0 named Cognite based in Oslo, Norway that migrated from Google BigQuery to their own database on on top of FoundationDB.

The video about it is available here: https://2023.javazone.no/program/85eae038-49b5-4f32-83c6-077... After watching, my thoughts were; why didn't you just use Clickhouse?
by josephg | 2025-05-08 06:34:00+00:00
> No, inheritance does not require additional address lookups. Single inheritance as discussed here doesn't even require additional address arithmetic; the address of the subclass instance is the same as the address of the superclass instance.

Yes it does! Inheritance itself is fine, but inheritance almost always means virtual functions - which can have a significant performance cost because of vtable lookups. Using virtual functions also prevents inlining - which can have a big performance cost in critical code.

> Nevertheless, they do still have an easier time when you embed record A as a field of record B (roughly what inheritance achieves in this case) rather than putting a pointer to record A in record B.

Huh? No - if you put A and B in separate allocations, you get worse performance. Both because of pointer chasing (which matters a great deal for performance). And also because you're putting more pressure on the allocator / garbage collector. The best way to combine A and B is via simple composition:

struct C { a: A, b: B }

In this case, there's a single allocation. (At least in languages with value types - like C, C++, C#, Rust, Swift, Zig, etc). In C++, the bytes in memory are actually identical to the case where B inherits from A. But you don't get any class entanglement, or any of the bugs that come along with that.

> I think the reason many game engines are moving away from inheritance is that they're moving away from OO in general

Games are moving away from OO because C++ style OO is a fundamentally bad way to structure software. Even if it wasn't, struct-of-arrays usually performs better than arrays-of-structs because of how caching works. And modern ECS (entity component systems) can take good advantage of SoA style memory layouts.

The performance gap between CPU cache and memory speed has been steadily growing over the last few decades. This means, relatively speaking, pointers are getting slower and big arrays are getting faster on modern computers.
by Daishiman | 2025-05-08 06:34:19+00:00
It seems mass media today like to have this role of sanewashing where characters with serious mental/cognitive challenges or a history of fraud are passed off as serious, reasonable people.

Milei is exactly one of those characters. Not only is his understanding of economics the equivalent of economic antivaxxing, his studies are from a questionable university, and he tries to pass of as a PhD when in reality his "PhD" is honoris causa, from a sham university. His latest book outright plagiarizes entire paragraphs ad verbatim from other researchers.

He has done exactly zero in any of these supposed efforts for AI and nuclear energy, taking science funding to the lowest value relative to GDP in 50 years and destroying the careers of tens of thousands of researchers and PhD candidates. Never in the history of the country has the scientific community been as openly opposed to a president's science policy as this one.

He's put stooges and charlatans like Reidel in charge of the nuclear program and shut down a perfectly viable nuclear development reactor like CAREM (the justifications for the closing are polar opposites to what the vast majority of researchers in the area say).

His understanding of AI is null. No one he's spoken to in Silicon Valley has put any money into these initiatives.

This entire initiative is just smoke and mirrors from a goverment that sees economics as a series of financial tricks. No industrial policy, no development policy, no science policy except for privatizing science and selling off working, effective public companies like Nucleoléctrica.
by AstralStorm | 2025-05-08 06:34:29+00:00
The point about the threat model of SGX is that insulating an enclave with it does nothing to protect the code actually handling the data from the enclave. It really does not even protect against firmware side attacks. For that, TPM attestation is just as good.

At some point, somewhere, data processed by the SGX enclave has to pass through the usual VTd or such. Unless SGX enclave is used to feed data directly into hardware, in which case the weak point is the firmware and bus instead.

If it ensured no side channel attacks, it would be useful for some operations. But it does not therefore it isn't.
by aaravchen | 2025-05-08 06:35:41+00:00
After years of working with Ubuntu on desktops and servers, I can tell you that for a server Ubuntu will probably always be the wrong choice.

Ubuntu seems to find it necessary to always invent some new way of doing a standard thing. Like how they use netplan for networking, a tool they invented themselves for a task that already has industry standard options available, is missing basic features those alternatives have, and adds nothing the alternatives don't also have (including any better usability). They do this all the time, and have to eventually be dragged into the modern era when they finally get sick of having no community support for their one-off inferior tool.

In particular I'm just waiting for snaps to finally die. But at least that has some technical possibilities the alternatives don't, they just aren't functionally available in snaps yet. In another 20 years, if Ubuntu keeps at it with their unconfigurable, hardcoded, private snap registry and slow limited advancement snap portals-equivalent implementation, they might even have half as much functionality and packaged tools as Flatpak current has today.

---

If you want a decent server, Debian is a better option, even though they have some finnicky choices, and its enough like Ubuntu you might have some cross-ober familiarity. Some of the old standbys like Fedora aren't good options because of their frequent update schedule and lack of long term support, but there are also some very good niche options if you can dig a lot more.

Also worth noting: if you want to keep the server working, you should plan on pretty much everything being in containers. It adds some complexity to what you're doing, but keeps each little experiment isolated from the others and avoids polluting the global system.
by elevaet | 2025-05-08 06:36:24+00:00
If they don't cash out directly to an off-ramp there might not be a way to connect a crypto address to a person. If they use the crypto to buy illegal shit and sell that on the black market for cash - or sell the crypto directly on the black market for cash, they could evade detection.

I wonder how much crypto is changing hands off-market in shadier corners.
by HdS84 | 2025-05-08 06:36:34+00:00
I don't think Inheritance is always bad - sometimes it's a useful tool. But it was definitely overused and composition, interfaces work much better for most problems.

Inheritance really shines when you want to encapsulate behaviour behind a common interface and also provide a standard implementation. I.e: I once wrote a RN app which talked to ~10 vacuum robots. All of these robots behaved mostly the same, but each was different in a unique way. E.g. 9 robots returned to station when the command "STOP" was send, one would just stop in place. Or some robots would rotate 90 degrees when a "LEFT" command was send, others only 30 degrees. We wrote a base class which exposed all needed commands and each robot had an inherited class which overwrote the parts which needed adjustment (e.g. sending left three times so it's also 90 degrees or send "MOVE TO STATION" instead of "STOP").