Hacker Newsnew | past | comments | ask | show | jobs | submit | matheusmoreira's commentslogin

That brought back memories... Used to daily drive Rockbox on my old 80 GB iPod decades ago. Got a lot of use out of the FLAC support.

Latest project updates are dated 2025. Blows my mind that this project is still alive. Feels oddly out of place in today's computer industry where chips are locked down to prevent projects like these from existing.


All the more reason to keep it alive, no?

> In the absence of proper language support, “sum types” are just structs with discipline.

With enough compiler support they could be more than that. For example, I submitted a tagged union analysis feature request to gcc and clang, and someone generalized it into a guard builtin.

https://github.com/llvm/llvm-project/issues/74205

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112840

GCC proved to be too complex for me to hack this in though. To this day I'm hoping someone better than me will implement it.


With proper discipline, one can even program a Turing machine directly. The problems are two: (1) Doing so is very slow and arduous, and (2) a chance of making a dangerous error is still quite high.

For instance, it appears that no amount of proper discipline, even in the best developers, allows to replace proper array support with a naked pointer to a memory area.


you can certainly wrap the array with a structure which provides either bounds information to be checked with generic runtime functions, or specific function pointers (methods) to get and set.

you can paper over _alot_ of Cs faults. ultimately its not really worth it, but its not nearly as fragile and arduous as you make it out to be


You can do such things until you have to interface with other code, eg the operating system.

So that’s an interesting case. I’d really like to keep language neutrality, because I don’t think we’re finished evolving yet. So this is a place where we need an abi. The first things we try to do is be simple…except for a terrible mistake with select, we don’t send arrays across that interface, sadly, we send c structs sometimes and I think that’s pretty horrible, because we have to try to lay them out in a compatible way, which is pretty fragile. The other sad bit is that we need to verify the addresses before we can operate on them, and that’s hugely prone to error.

Im curious if you have a suggestion about how to fix both of those. The structure thing can clearly be a more robust serialization. Addresses? Idk


As a matter of course, every structure that may have a variable size should start with a length designator. Lengths 1 to 32767 take two bytes of a designator, 32768 to 2147483647 take four bytes, larger takes 8 bytes. Realistically 62 bits should suffice for any practical case, but arbitrary-size integers are well-known, and are easy to unpack and operate on.

This may slightly increase the size of some structures, but most of the time it would not, because of the alignment padding inherent to most structures anyway. But an entire class of vulnerabilities would be gone. This doesn't even need a change in the language, even though direct syntactic support would be nice. It just takes discipline when designing APIs.


The compiler's job is to program the turing machine for us. It should help as much as possible. For example, I really like using enums because compilers have extensive support for checking that all values have been handled in switch statements.

I don't like it when compilers start getting in the way though. We use C because we want to do raw things like point a structure at some memory area in order to access the data stored there. The compiler's job is to generate the expected code without screwing it up by "optimizing" it beyond recognition because of strict aliasing or some other nonsense.


It is on my list (also as a proposal to WG14). Sorry, I am a bit too overloaded currently. (If people want to help with such improvements - with either time or money, let me know.).

FWIW, Coverity (maybe others) has a checker that creates an error if it detects tagged union access without first checking the tag. It’s not as strict as enforcing which fields belong to which tag values, but it can still be useful. I’d much rather have what was proposed in the GCC bug!

> a VB6 style “On Error GoTo X” global error handler that has to account for all different contexts under which the exceptional situation might have occurred

... That seems like a pretty accurate description of how exception handling mechanisms are implemented under the hood. :)


Exceptions are actually a form of code compression. Past some break even point they are a net benefit, even in embedded codebases. They're "bad" because the C++ implementation is garbage but it turns out it's possible to hack it into a much better shape:

https://youtu.be/LorcxyJ9zr4


There is no such thing as the 'C++ implementation' of exceptions. Each vendor can do it differently.

"Government scrutiny" ? What a bunch of bullshit.

If anything this enhances Proton's reputation. If so called "terrorists and perverts" trust it to the point they rely on it for their own security, then it's worth serious consideration. Nobody wants to use cryptography that some indian government can subvert.


Next time there is a mass shooting or terrorist bomb blast in your neighborhood, I hope you can look at a poster of Proton VPN on your bedroom wall, and feel safe.

And then when you find out the police are going door to door to investigate the terror attack, you should start distributing printouts of an ad of Proton VPN urging locals on how to evade police/government scrutiny via Proton VPN.

See how that works out for you. You will be arrested as a terror sympathiser.

No surprises why.

It's because terrorists use VPNs to evade scrutiny, and the last thing that any respectable company or civilian should be doing is to openly associate themselves with terrorism, which is what Proton has done.

Proton (or any legitimate company, for that matter) has no business doing subversive activities in terror sensitive areas like J&K. If they do, then they need to face the repercussions.

https://tfipost.com/2026/01/profit-over-people-proton-vpn-ge...


> You will be arrested as a terror sympathiser.

I'm not sure where you live but in most of the world you will not in fact be arrested as a terrorist sympathizer for advertising VPNs.


Total bullshit. If people start shooting and bombing, then you pick up your weapons and you kill them.

You don't get to mass "scrutinize" random citizens by eavesdropping on their private communications just because terrorists might be hiding among them. If you do this, you are the terrorist and anyone who resists you has the moral high ground. Cryptography and anonymization technology are merely one of many forms of self-defense against your tyranny.


I was in your shoes a few years ago. Just move already. Don't worry about it. Get your own domain and point the MX records at literally any email service out there. If you don't like it you can just switch later. Just start using your own domain as soon as possible.

It really is life changing. When you have your own domain switching email services is risk free since your addresses don't change. You can literally try out all the email services out there.

For the record I'm a happy Proton customer. They seem to be the only ones who still care about PGP. I even interacted with them here on HN a few times.


Plenty of companies would do that if they could. The problem is it has become illegal for them to do that now. KYC/AML laws form the financial arm of warrantless global mass surveillance.

KYC/AML is luckily still confined to the financial sector. There's no law for operating system vendors to do KYC/AML.

There is no law yet.

Where I live, government passed a similar law to the UK's online identification law not too long ago. It creates obligations for operating system vendors to provide secure identity verification mechanisms. Can't just ask the user if they're over 18 and believe the answer.

The goal is of course to censor social media platforms by "regulating" them under the guise of protecting children. In practice the law is meant for and will probably impact the mobile platforms, but if interpreted literally it essentially makes free computers illegal. The implication is that only corporation owned computers will be allowed to participate in computer networks because only they are "secure enough". People with their own Linux systems need not apply because if you own your machine you can easily bypass these idiotic verifications.


Which law is that?

Online Safety Act in the UK.

In Brazil, where I live, it's law 15.211/2025. It makes it so that the tech industry must verify everyone's identity in order to proactively ban children from the harmful activities. It explicitly mentions "terminal operating systems" when defining which softwares the law is supposed to regulate.


OpenAI does KYC. I refuse to deal with that.

Power users should stop bothering with Windows nonsense and install Linux instead so that they can actually have control over their system.

It's 2026. The abuses of corporations are well documented. Anyone who still chooses Windows of their own volition is quite literally asking for it and they deserve everything that happens to them.


You only have to run through a modern Windows installer to understand how screwed you are if you install it. Last time I did this for a disposable Windows VM (a couple of years ago) I remember having to click through a whole bunch of prompts asking about all the different types of data Microsoft wanted my computer to send them. Often the available answers weren't "yes" or "no" but more like "share all data" vs "share just some data". After that I recall being forced to sign up for an outlook account just to create a local login unless I unplugged my network cable during the install. I've heard they have closed that loophole in recent installers.

I'd already long since migrated away from Windows but if I'd been harbouring any lingering doubts, that was enough to remove them.


I’ll bite. What Linux distro currently has the nicest desktop experience? I work on a MacBook but my desktop is a windows PC that I use for gaming and personal projects. I hear Proton has made the former pretty good now, and the latter is mostly in WSL for me anyway. Maybe a good time to try.

What do you suggest? I’ll try it in a VM or live usb.


There are so many distros that it really depends on your use-case and it's hard to make a generic suggestion. Ubuntu is a common recommendation for first timers, mainly because as the most popular distro you'll easily be able to Google when you need help with something, and it also uses the most popular package format (.deb). There's also Linux Mint which is basically Ubuntu but with some of the latter's more questionable choices removed (e.g. snaps) and minus the big corp owner. By using one of these you'll also be learning skills relevant to Debian (which Ubuntu is derived from) which is a solid choice for servers.

Regardless of which distro you choose, your "desktop experience" will be mostly based on what desktop environment you pick, and you are free to switch between them regardless of distro. Ubuntu for example provides various installers that come with different DEs installed by default (they call them "flavours": https://ubuntu.com/desktop/flavors), but you can also just switch them after installation. I say "mostly" because some distros will also customise the DE a bit, so you might find some differences.

"Nicest desktop experience" is also too generic to really give a proper suggestion. There are DEs which aim to be modern and slick (e.g. GNOME, KDE Plasma, Cinnamon), lightweight (LXQt), or somewhere in between (Xfce). For power users there's a multitude of tiling window managers (where you control windows with a keyboard). Popular choices there are i3/sway or, lately, Niri. All of these are just examples, there are plenty more DEs / WMs to pick from.

Overall my suggestion would be to start with something straightforward (Mint would probably be my first choice here), try all the most popular DEs and pick the one you like, then eventually (months or years later) switch to a more advanced distro once you know more what your goals are and how you want to use the system. For example I'm in the middle of migrating to NixOS because I want a fully declarative system which gives the freedom to experiment without breaking your system because you can switch between different temporary environments or just rollback to previous generations. But I definitely wouldn't have been ready for that at the outset as it's way more complex than a more traditional distro.


This was a helpful answer. It really is hard to make a choice if you've left the ecosystem for a while. My mac as well as windows+WSL have been good enough for a while, but this post got me curious. And mind you, I'm not completely out of touch with _linux_ - its running two servers in my basement. I've installed slackware from floppies and compiled gentoo. But it's never been the year of the linux desktop for me.

I ended up booting Mint with Cinnamon. I like it. It's pretty intuitive coming from macos/windows, and I'm in the terminal half the time anyway. Installing the nvidia driver was easy, then steam does a good job installing whatever compatibility layers it needs. I'll do CUDA next and try it for a month or so.


Bazzite. It's KDE, it's easy, it's immutable so you can update and it's unlikely to break shit. It comes with Steam already. Keyboard shortcuts very similar to Windows. Dolphin (File Explorer equivalent) responds as quickly as one would expect File Explorer to respond if it were developed by sane people. You also get an Android-style permission system with Flatseal, so you can disable permissions for various applications.

One warning: keep in mind that if your desktop PC motherboard has a mediatek wifi+bluetooth chip, that chip will probably not work on any version Linux (AFAIK). I don't use wifi on my desktop but I do use bluetooth game controllers. You can replace the chip (which is what I did, with https://www.amazon.com/dp/B08MJLPZPL), get a bluetooth dongle (my friend recommends https://www.amazon.com/Bluetooth-Wireless-External-Receiver-...), or get a PCIe one.


Something with KDE. Never used KDE extensively because I hate non-tiling WMs, but something like Kubuntu would give you a more windows-esque experience by default. Here's the download link:

https://kubuntu.org/download/

Bon appetit!


I don't use KDE either, but it does seem to be the most Windows adjacent choice. Unless you like very old versions of Windows in which case you may prefer XFCE like me (Xubuntu or the xfce variant of Linux mint).

I heard Kubuntu is not a great distro for KDE, but I can't comment on that personally.


If you want maximum commodity and as many things to "just work" as possible out of the box, go for good old plain Ubuntu.

If you care a little more about your privacy and is willing to sacrifice some commodity, go for Fedora. It's community run and fairly robust. You may have issues with media codecs, nvidia drivers and few other wrinkles though. The "workstation" flavor is the most mature, but you may want to give the KDE version a try.

If you want an adventure, try everything else people are recommending here :)


That's literally like asking "What car has the best driving experience?". There is no one answer.

If you want something that "just works," Linux Mint[1] is a great starting point. That gets you into Linux without any headache. Then, later when bored, you can branch out into the thousands[2] of Linux distributions that fill every possible niche

[1] https://linuxmint.com/

[2] https://distrowatch.com/dwres.php?resource=major


I would never, recommend anything from Debian-family for consumer use. Its literally outdated linux, under the marketing 'stable'.

Fedora is so significantly better.

I wouldn't confuse popularity for good. Ubuntu gave away free CDs in the 2000s and are living off old marketing.

Debian family is so bad. You will be in the terminal constantly just trying to get stuff to work. Stick to a well maintained, up to date, consumer distro, Fedora.

(reminder that Fedora is Not Arch)


If you're a developer, try NixOS. The code based configuration can be daunting but LLMs are very good at writing it.

Not sure it's good as a starter distro, but other than that I agree. I was put off NixOS for a long time despite loving the principles behind it. Then a few weeks ago I had ChatGPT give me a short course on it, including flakes and the basics of the Nix language. I completed that in a few hours and achieved more than I ever had reading the Nix docs and blogs etc. Now I'm able to use an LLM to help me write flakes while also understanding what it is doing (I'm not a fan of blindly using AI generated code).

That's what I'm getting at - the nixos learning curve is flattened out completely with LLMs to the point that I do recommend it as a starter distro for anyone technically competent (as it's still crucial to actually read and understand what the LLM produces)

For gaming I suggest a Steam Deck. I love mine, it's an awesome Linux device. Not locked down either.

> There's no longer any argument in favor of an ad model when you're paying 20-30 dollars a month already

Sure there is. CEO needs a new yacht. He can't afford to leave money on the table. All those subscribers? They must have a lot of disposable income if they can afford to blow it on "journalism". It would be stupid not to advertise to them.


Stallman has always been right. Took me many years to understand just how far he saw into the future. It's mind boggling just how right he was about everything.

The current status quo is corporations and governments are locking the hardware down, rendering free software irrelevant. Sure, you can hack your computer, but if you do it fails remote attestation and is marked as untrustworthy by other computers on the internet. "Tampered with" your machine? Can't access bank account, can't message others, can't stream content, can't even play video games, maybe one day we won't even be able to connect to an ISP. Hackers in control of their systems are marginalized, ostracized second class citizens now. Only corporate and government owned devices can participate in the wider ecosystem now. If you own your machine you're banned from everything.

And it's only going to get worse. Stallman is losing this war. Computing freedom is being destroyed and there's little that can be done about it. We do not have the power. Our values are irrelevant to the wider population. It's a damn shame.


> Our values are irrelevant to the wider population.

This is the saddest part. Things are getting worse for everyone and most people just don't care. They are either ignorant or accept it as inevitable.

I see 2 issues:

1) People don't have real power. There's too many steps between an issue you care about and a solution which requires changing laws. I don't see a solution other than people voting on laws directly and possibly votes weighted by how much they actually know about the stuff. How to implement it at reasonable cost is a very difficult question.

2) You can't make people care. People only start caring once they personally get hurt. Theoretical downsides don't interest most of the population. Freedom of speech is something they've learned at school about and they know they are supposed to cheer for it but when a platform requires spelling fuck as f*ck, that's OK with them - it might be the canary in the coal mine before more sophisticated censorship (analysis of sentiment/meaning, shadow bans) is rolled out but that's a theoretical concern, if they are able to comprehend it at all. And even when they get hurt, they often don't learn from it. I've seen plenty of people lose accounts on various platforms but all they do is switch to another proprietary platform, without looking for real alternatives.


Doctorow's "civil war over general computing" comes to mind..

https://boingboing.net/2012/08/23/civilwar.html

unless the general population somehow freaks into privacy and anonymity and independency, it seems slowly losing (i don't hold my breath, seen enough "freebies" that later turn into highly-paid and noone bothering). Or said in another way, it seems like.. irrelevant?

But you never know. May be garage-made ESP64-meshes will appear, in a parallel "universe". Or whatever. When things get hot..


> May be garage-made ESP64-meshes will appear, in a parallel "universe".

I've been posting this idea for a while. We need a way to manufacture free computers at home, just like we can write free software at home. That's the only way we'll have a chance at winning the war on general purpose computing. Semiconductor fabs cost billions of dollars, they are single points of failure, easily controlled by governments and industry interests. We'll never be free as long as we depend on them for our machines.

If this continues, one day we'll not even be able to buy general purpose computers anymore. Computers are too subversive, too powerful for "mere citizens" to have access to. Give people free computers and they can make a mockery of things like copyright, they can wipe out entire sectors of the economy. Give people free computers and they have access to encryption which is capable of defeating police, judges, spies, militaries. They don't want us having unrestricted access to this powerful stuff. This is similar to the right to bear arms in the USA.

Normal people? They'll surrender all their power and freedom no questions asked. They'll give it all up with literally zero resistance. Corporations tell them they need to own their computers. They need it to stop malware, to stop cheating in video games, whatever. And they believe it. They believe it so much when you try to make a stand for freedom they come and they argue with you about it. They trade freedom for security and convenience every single time. It's so sad.


I'm optimistic, actually.

One sort of "big-picture" idea that I've seen that I think is generally useful is kind of like this: For a VERY long time, Linux was kind of a joke for most.

But I realized that, it being 1% of desktops was still VITALLY IMPORTANT, even when it was never huge -- it provided enough "background pressure" for mainstream things to not screw up overly badly.

I see e.g. "homelabs" and "self-hosting" as doing that right now. And, again, given that Linux won :) -- we will see.


Not only did it provide that background pressure, but desktop software is a complex domain. So it often pushes the bounds of Linux software overall. Systemd is the example I have in mind here, but I’m sure there are others too that I’m not thinking of.

YUP. Old timer here. I remember like having e.g. my Apple II, and somewhat later Stallman saying, e.g. "they're going to be able to reach into your device and burn your ebooks."

And I distinctly remember thinking how absolutely out of his mind PARANOID this man was. Because, you know, books and all are just files. And in what possible universe could you and would you build in the possibility of some other remote person having the ability to hack into the device that's IN YOUR HANDS and do something crazy like that?

oh.


Weirdly, I couldn't disagree more.

By focusing strictly on software, we can argue that Stallman mostly won, and I think the mistake would be conflating software freedom with freedom freedom.

Freedom freedom will ALWAYS be hard, no matter what. People who want to take it away will use whatever tools are there to do it. Stallman et al saw that it was special to put guardrails around the very specific notion of "we have general purpose machines that can run any software, the ability to run ANY software must be protected."

And that, today, is overwhelmingly more true than false. You, or groups, can get a computer, hook it to the internet, and run whatever you want. Like "Linux," that doesn't GUARANTEE perfection, but it's an essential step.

AKA, I shudder to think what would have happened if Microsoft had developed AI in house.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: