HNHacker News
TopNewBestAskShowJobs

caspper69

728 karma · joined July 29, 2018

submissionscomments
caspper69··on Why F#?
I make that mistake more often than I care to, but you are 100% spot-on. They are sum types, not product types. Thank you for making me walk the walk of shame!
caspper69··on Why F#?
Having reviewed the proposal (of course no guarantee that's what discriminated unions (aka product types aka algebraic data types) will look like), and it appears that it very much integrates nicely with the language.

I don't suspect they'll make too many changes (if any) to the existing standard library itself, but rather will put functions into their own sub-namespace moving forward like they did with concurrent containers and the like.

Given their penchant for backwards compatibility, I think old code is safe. Will it create a schism? In some codebases, sure. Folks always want to eat the freshest meat. But if they do it in a non-obtrusive way, it could integrate nicely. It reminds me of tuples, which had a similar expansion of capabilities, but the integration went pretty well.

caspper69··on Why F#?
It has been in discussion for quite some time. I believe they'll get there soon: (example) https://dev.to/canro91/it-seems-the-c-team-is-finally-consid...

In the interim, MS demonstrates how C# 8.0+ can fake it pretty well with recursive pattern matching: https://learn.microsoft.com/en-us/dotnet/csharp/language-ref...

Not the same I know, and I would love me a true ADT in C#.

Edit (a formal proposal): https://github.com/dotnet/csharplang/blob/18a527bcc1f0bdaf54...

caspper69··on Convert Linux to Windows
I have points to burn, so I'll post, because I know this will scratch some folks the wrong way- apologies in advance.

I use Windows. In fact, I like Windows. I know lots of (ok, more than 5) greybeards who feel exactly the same way. I don't want Linux to be Windows, but I also don't want Linux on my personal desktop either.

I have a Mac Mini M1 on my desk, and I use that for the things it's good for, mainly videoconferencing. It's also my secondary Adobe Creative Suite machine.

On my Win11 desktop, I have WSL2 with Ubuntu 24.04 for the things it is good for- currently that's Python, SageMath, CUDA, and ffmpeg. For my Unix fix, I use Git Bash (MSYS2) for my "common, everyday Unix-isms" on Windows.

I also use PowerShell and Windows Scripting on my box when I need to.

Why? Well, firstly, it's easy and I've got stuff to do. Secondly, cost is not really an issue- I bought my Windows Pro license back with Win7, and it was about $180. That was maybe 15 years ago. They have graciously upgraded me at every step- Win7 -> Win10 -> Win11, all at no cost. Even if I had had to buy it, my Taco Bell tab is higher in any given month than a Windows license (love that inflation).

Why else? Everything works. I get no annoying popups, and I really no longer sweat garbage living on my drive, because that ship has sailed; wanna waste 50GB? Sure, go ahead.

But the most important reason? My hardware is supported. My monitors look great; printers, scanners, mice and USB drives & keys all work. In fact, >90% of the time, everything just works. Further, I can share effortlessly with my Mac, all my Linux servers speak SMB (CIFS), Wireshark works, and my programs are all supported including most open source software. And I do run apps that are 20+ years old from time to time.

Truth be told, I have tried the dance of daily driving Linux, and it's a laundry list of explanations to others why my stuff is different or deficient in some way. The kicker is that my clients don't care about purity or coolness factors.

Linux has its place. But please don't put in on my main machine, and please don't give it to my family members. They're only being nice by living with a sub-par desktop experience. It will always take a herculean effort to stay on par with Windows or MacOS, and no one really wants to put their money where their mouth is.

Please don't misunderstand. I admire and respect authors of open source software, and my servers thank them. But being a contrarian and dogfooding what KDE and GNOME put out, fighting with Nvidia and AMD, dealing with constant driver interface changes, and not having proper commercial software support is not my idea of fun. It was 30 years ago. Today? I'd rather hang with my daughter or write some code.

These distros have had 35 years. I don't know what else to say.

caspper69··on Xee: A Modern XPath and XSLT Engine in Rust
Had we had better process isolation in the mid-90s, I assume web application development would mostly be Java apps, with a mini-vm for each one (sort of a qubes like environment).

We just couldn't keeps apps' hands out of the cookie jar back then.

caspper69··on A love letter to the CSV format
Well, back in my day, we used tabs for tabs.

But then some folks came along about 15 years ago screaming about spaces, and they won, so now tabs are 2 or 4 spaces.

The law of unintended consequences strikes again!

Note: not meant to denigrate you space supporters out there.

caspper69··on Writing your own C++ standard library from scratch
Thank you for the insightful post.
caspper69··on Writing your own C++ standard library from scratch
Interesting that their implementation is Apache 2.0 licensed, yet includes exceptions for LLVM and for GPLv2 licensed code/projects wrt patents.

Does anyone know if the library's quality is on par with the GNU or Clang libraries? Google has their own too, if memory serves. Is there an implementation deemed "the best"?

caspper69··on Five Kinds of Nondeterminism
Understood. It was hard to tell if he was only writing it from the standpoint of FM or if he was speaking more generally.
caspper69··on Five Kinds of Nondeterminism
The article wasn't bad, but the examples felt a bit thin; almost like the author was reaching a bit to hit that magic number of 5.

And you're definitely not wrong on the abstract subsection. I mean, essentially all he says is that "there's a mechanism in our system which is so complicated/convoluted that we decided not to model it with TLA, so instead we chose to simply call it non-deterministic, and therefore it is now abstract non-determinism." Hmm. If we're truly being abstract, that's not really all that different from the PRNG and user input examples, except, you know, it's actually still completely deterministic code.

Also, I have to say- 5 different types of non-determinism, and not one mention of quantum systems?

I took issue with #4 too. If your code consumes API endpoints that are non-deterministic, that strikes me as something you should take up with your vendor. An error condition on a network call is not non-determinism. It's just reality from time to time.

caspper69··on Greg K-H: "Writing new code in Rust is a win for all of us"
Thanks for the heads up.
caspper69··on Greg K-H: "Writing new code in Rust is a win for all of us"
After all the Ada threads last week, I read their pdf @ Adacore's site (the Ada for Java/C++ Programmers version), and there were a lot of surprises.

A few that I found: logical operators do not short-circuit (so both sides of an or will execute even if the left side is true); it has two types of subprograms (subroutines and functions; the former returns no value while the latter returns a value); and you can't fall through on the Ada equivalent of a switch statement (select..case).

There are a few other oddities in there; no multiple inheritance (but it offers interfaces, so this type of design could just use composition).

I only perused the SPARK pdf (sorry, the first was 75 pages; I wasn't reading another 150), but it seemed to have several restrictions on working with bare memory.

On the plus side, Ada has explicit invariants that must be true on function entry & exit (can be violated within), pre- and post- conditions for subprograms, which can catch problems during the editing phase, and it offers sum types and product types.

Another downside is it's wordy. I won't go so far as to say verbose, but compared to a language like Rust, or even the C-like languages, there's not much shorthand.

It has a lot of the features we consider modern, but it doesn't look modern.

caspper69··on My Time at MIT
This is the problem with "common knowledge" and "everybody knows" and "gut feelings".

Unless you work in an industry (such as academia, or farming, or auto manufacturing, or any of the other thousands of industries), what you know is superficial.

You think you know, because how complicated could something be?

The public could learn a thing or two by asking questions from people who make these pursuits their lives.

For instance, did you ever stop to think that Professors advise students who write papers, and are therefore listed as co-authors?

Another knee-jerk would be: look at these professors only putting out 20 papers a year; they are so inefficient- they should be mentoring far more students for the money we pay them.

It cuts every way until you talk to people.

caspper69··on Ask HN: Why isn't anyone else bothered by the fact that life is only on Earth?
This cannot be stressed enough:

Space is big. Whatever you think big is, it’s so much bigger, that even thinking about it is mind bending and could induce vertigo.

The nearest star, our Sun, could hold 1.3 million Earths. It only looks the size it does because it’s far away. How far? At the speed of causality (the universal speed limit), which is the speed at which light travels in a vacuum, of 3.0 x 10^8 m/s or 670.6 million miles per hour (pretty fast), light from the Sun takes 7 minutes to reach Earth. For a comparison on the scale of just the planets in our solar system, that same light takes 5.5 hours to reach Pluto.

You might think that’s not so big.

As a point of reference, Voyager, which has been traveling since 1977 (~47 years) at around 38,000 mph, is around 23.5 light hours away.

Now, our closest star, Proxima Centauri, is 4.2 light years from Earth. Voyager hasn’t even gone a light day in nearly 50 years. At currently attainable speeds, it would take over 50,000 years to get there.

That’s just the closest star. Just one potential solar system.

Our galaxy, the Milky Way, is thought to have 1-400 BILLION stars (hard to tell from the inside). Our observations indicate that it is 100,000 light years across.

Now if that wasn’t bad enough, for intergalactic travel, the closest galaxy, Andromeda, is 2.5 million light years away. It is estimated to have up to a trillion stars.

After that, it gets even more stupefying. We can see hundreds of billions (with a b) of galaxies as far away as GN-z11, which is estimated to be 32 BILLION light years away.

We’ve made it less than a light day.

We have no idea if we can even approach even a substantial fraction of the speed of light, and even if we could, there’s time dilation and the issue of slowing dowm. Communication would be anywhere from difficult to inconvenient to practically impossible.

Anything beyond that is either science fiction or a very well kept secret.

So that’s the reason we don’t have alien fossils or microbes.

It can take 18 months just to get to the next closest planet, and 8-10 yesrs to get to the farthest. never mind anywhere else.

And we are so far away from everything (as is everything else), even if there were radio or tv broadcasts, they would be far too weak for us to detect.

There probably is life out there, but maybe the great filter is that stars have a fixed lifespan and the distances are just too great to overcome.

caspper69··on NASA has a list of 10 rules for software development
Hi Andy, it's been a long time since I pestered you. Glad to see Zig coming along so well. Congratulations on the progress! I'll apologize in advance for the long post.

Wrt exceptions, you didn't elaborate. Exception handling can be a hot button issue with passionate opinions. My comments are general in nature; they are not specifically directed toward you or the Zig language.

IMHO, exception handling is inherently neither good nor bad- it is merely a mechanism; it has upsides and downsides, and the context in which they are being discussed / analyzed / used should be the guiding factor.

C provides no bounds or overflow checking. In the context of a system which must not fail, you are then forced to use some combination of rigorous assertions, overflow flag checking, and return value verification. It's cumbersome and ugly.

Rust provides both bounds checking and overflow checks (in debug mode at least). Asserts are still available, but are not required in as many instances as in C.

Neither of those languages provide what we would consider to be exceptions or exception handling. An argument could be made that if you squint the right way that Rust's resume after panic is a form of exception handling, but that's a semantic debate, and it would certainly be considered non-traditional if it were to be categorized as such. Wrt C, it had never occurred to me that setjmp()/longjmp() could be used as an exception handling mechanism. I have always seen them used as a context-switching mechanism for e.g. tasking (green-threads).

In languages that provide exception handling, both runtime and user defined exception conditions are handled by the runtime itself (oftentimes behind the scenes). This mechanism allows one to provide a catch-all lexical scope for handling exceptions, which can be cleaner and more ergonomic from a programmer perspective and can be simpler to reason about (although this is certainly debatable). It also provides an opportunity to handle conditions that might be unknown or unforeseen at the time the code is being written. Defer semantics in a language without exceptions might be considered a mid-ground approach.

The usual complaints with exceptions are: (1) that they essentially constitute hidden control flow and hidden code execution that happens outside of the plain reading of the source; (2) that you pay the performance penalty for checking / verifying the exception conditions at every line of code (also see #1); (3) that the conditions considered "exceptional" by most implementations are instead just run-of-the-mill error conditions that should be handled explicitly; and (4) that there is no well-defined structure or convention for where and when to handle exceptions and when to pass them up the stack (again, see #1) which results in a spaghettification of sorts.

C++ (optional), Java, JS, Python and C# (among many others) all provide exception handling and are all mainstream.

My general rule of thumb (which is always subject to situational variance) is that application code benefits from robust exception handling while systems level or performance critical code should not use exceptions, or at a minimum should be very judicious with usage.

Exceptions can be abused and misused like any other feature, but the reduction in repetitive manual error checking (see Go) can be a win for many teams.

YMMV of course- we have all been dragged into the 7th circle of hell at one time or another, and programming features are a lot like liquor; once you've gotten sick on one, it's near impossible to go back.

caspper69··on Complex dynamics require complex solutions
It's only fungible at the point of expenditure. Tax income is a dollar in hand that creates no liability; debt must be repaid with interest.

Not sure I get your second point- I am aware of what is meant by the trust fund; actually, I thought it was the only one- you enlightened me about Medicare's. (If you re-read my post, you will see my use of the plural "funds" in "trust funds" was referring to the money itself, not multiple funds).

Anyway, I see 12-years of reserves at current projections for the HI (Part A fund for Hospital services), while the SMI (Part B for Doctors and outpatient services) isn't even listed- this fund is the one that seems to be the dog. Wow. And it's not even close. Yowza.

https://www.ssa.gov/oact/trsum

I don't think it's fair to bring Medicaid into the discussion. There's no separate tax for it, and the vast majority of people don't receive it- it's a subsidy to the poor. If you'd like to discuss that I'd be happy to, but I'm more comfortable on fiscal realities than judging what amount to local humanitarian efforts; my opinions might not be well received because they are not particularly generous. Additionally, I think it is far outside the scope of my original point that people's taxes are much higher than they think.

I'll close on this note: I think it's important that people speak in specifics, especially in trying times. Both platitudes and demagoguery are damaging to the public discourse, as is information presented out of context and the substitution of opinion for fact.

I spoke out of my rear-end on Medicaid (you did kind of catch me out of left field), and I generally try not to do that. I did some more digging (unlike SSA, they are not very forthcoming), and I'll take my medicine.

Thanks for the eye opener. Take care.

caspper69··on Complex dynamics require complex solutions
The irony here is that nowhere in my original post did I claim there was no commingling of funds.

In fact, I was trying to point out that our taxes were actually HIGHER than most people think due to FICA. Did I say these programs were covered?

My point was that they were taxed separately.

And to answer your question, the dirty little secret of government is that they raid the trust funds. Why else would the trust fund have interest income?

But it's not really from income taxes, it's from raising money through issuing debt.

I was not making the point you thought I was making.

caspper69··on Complex dynamics require complex solutions
Excuse me, sir. Please don't just tell me I'm wrong without doing some research.

SS: https://www.ssa.gov/news/press/factsheets/HowAreSocialSecuri...

How is Social Security financed?

Social Security is financed through a dedicated payroll tax. Employers and employees each pay 6.2 percent of wages up to the taxable maximum of $176,100 (in 2025), while the self-employed pay 12.4 percent.

Total income, including interest, to the combined OASI and DI Trust Funds amounted to $1.351 trillion in 2023. ($1.233 trillion from net payroll tax contributions, $51 billion from taxation of benefits, and $67 billion in interest)

US Social Security Expenditures in 2023: $1.351 trillion.

Do you see income taxes in there other than those from recipients?

I won't dirty up this post further, but Medicare is likewise funded; like SS, income taxes on Social Security benefits do go partially to fund Medicare, as those people are generally program recipients. The final funding source is Part A premiums.

I don't mind banter or disagreements, but please do not tell me I'm wrong when you have not even bothered to look. Your gut feeling is not a good basis to dispute someone's premise.

caspper69··on The IRS Is Buying an AI Supercomputer from Nvidia
A big part of the failure is that the system is not entirely digital, and not entirely automated.

People can still submit paper returns (and this is common for any businesses beyond a certain size- I've seen 200+ pages for a small-ish company's return). Supporting documentation and schedules can be non-standard (like receipts, letters, exhibits, spreadsheets, contracts, etc.), and the forms themselves can be hand-written and the other docs can be on inconsistent paper sizes so bulk ocr of any kind is rough.

Really, you have several challenging problems- maybe 200M individual returns filed every year, who knows how many corporate returns, all of the daily/monthly/quarterly filings for payroll, then for tax season you have an army of temp workers who are responsible for doing manual data entry which is cumbersome.

Then you have the financial management/reporting/reconciliation side of it. The volume is staggering. Electronic transfers in both directions, handling paper checks both to and from taxpayers. More manual data entry for manual payments.

And the kicker of all this is that it actually works for some pretty reasonable value of that term. And everyone here knows what the code probably looks like and we definitely know what the code's documentation looks like.

How would you like to sit down with the nearly 7,000 pages of the US Tax Code and start taking a bite of that monster? It's not a reference manual- the amount of cross referencing with other laws and regulations required would be monumental.

So, you are correct, AI is definitely not the answer; But I suspect the AI is for rooting out tax cheats (or maybe certain tax cheats), not running the system itself.

caspper69··on A Libertarian Island Dream in Honduras Is Now an $11B Nightmare
Yeah, when you set up shop on someone else's sovereign territory, one day, at some point, you're going to have a bad time.

The state's monopoly on violence is the ultimate tiebreaker, although as noted, there are many other ways these governments can extract concessions (banking, utilities, telecom, egress (!!)).

That's why Uncle Sam is nice to have on your side. A libertarian utopia or corporate controlled trading zone doesn't stand a chance without the backing of a sovereign with a military.

caspper69··on Complex dynamics require complex solutions
Slightly pedantic nit:

I know you're pointing out what "taxes" get you, but most people look at the tax brackets for income taxes and correlate that with the level of government services they receive.

It's important to note that income taxes do not fund Social Security and Medicare. These are funded through FICA taxes, paid 7.65% from the individual and the employer match of another 7.65%. That's why if you are self-employed (or do 1099 work on the side), you pay self employment taxes, which is both halves to the tune of 15.3%.

So people actually pay their income tax (less the standard or itemized deductions) on the stairstep up to the top bracket IN ADDITION to FICA.

Not passing judgment on whether it's an equitable deal for everyone involved, but we do get taxed pretty heavily. Especially when you throw state income taxes (for those states that have them) and property taxes into the mix.

caspper69··on Kevin Mitnik FOIA Final
It usually wasn't intentional: https://www.ssa.gov/history/ssn/misused.html

The system still has to disambiguate and support the prospect of it happening though.

caspper69··on Delphi Is 30
I was never a Borland guy because I didn’t know pascal or c++ when they were big. But I (believe) I’ve heard stories that Microsoft was especially aggressive about poaching their talent. Things like pulling up in a limo with not-insignificant amounts of actual cash to lure them away. At least I think it was Borland. All’s fair in love & war I suppose, but it does feel dirty, lol.

Anyway, it’s hard to execute when your best and brightest keep jumping ship to the competition.

Please let me know if it was not Borland, because this is a good anecdote.

caspper69··on Nearly half of Steam's users are still using Windows 10
True story- when XP was released, all of the people "in the know" (among Windows users) used Win2k.

Nobody wanted to upgrade to XP. It was called the Fisher-Price OS because of the way they made the GUI colorful with oversized icons/shapes and rounded corners everywhere.

The old rule of thumb was that every other version was the good one, so people were naturally skeptical of XP (and after having seen ME, who could blame them). Not sure if that holds anymore, or if there is a good one.

caspper69··on Nearly half of Steam's users are still using Windows 10
Been running Win11 for a long time; used to be on the Insider track, so the upgrade came early and automatically.

No ads on the start menu. No bs notifications. OneDrive disabled and set to not auto-start.

I did have to disable all of the "interests" on the whatever-widget in the lower left corner, only leaving on the weather, so now it shows the current temperature, but doesn't feel the need to pester me about "breaking news". And I'm really irritable about that shit. Even text or an exclamation point grinds my gears; I feel that same way on mobile phones. No Best Buy, you don't need an indicator on your icon because I've dismissed your 3-times-weekly sale announcements.

Not sure about telemetry, need to look into that. I'm not really against telemetry, per se, provided it has a valid use case. If they're taking pictures of my screen while I'm working to train AI or do god knows what with it, I will deal with that (including moving full time to a distro, which I have done in the past).

Otherwise, my only real complaint is they manage to eff up the mouse in some way every every 4th update or so. Latest one is special pointers failing to return to normal after mousing away from whatever caused the special pointer (i.e. the pointer switches to indicate resizing a window and then doesn't switch back).

Beyond that, mostly smooth sailing. Wish WSL2 would finally officially support 6.x kernels, but they've been blocked on some random issues for 8+ months now.

I'm running Pro btw.

caspper69··on Louisiana to end mass vaccine promotion, state's top health official says
Seemed safer to say than "everyone", because there's always exceptions.
caspper69··on Louisiana to end mass vaccine promotion, state's top health official says
Turns out, the masses don't want to actually learn.

What they want to do is share what they think, and only read things that they agree with.

caspper69··on Resigning as Asahi Linux project lead
It was :)
caspper69··on We are the "thin blue line" that is trying to keep the code high quality
That’s not surprising at all.

You hate everybody, lol.

caspper69··on Resigning as Asahi Linux project lead
I'm sorry sir/mam, but that is simply not true.

All you have to do is read comments from members of the Rust community online, in every public forum where Rust is discussed in any way.

Understand, I am not trying to villainize an entire community of software developers; but for you to say something that's blatantly false is to just stick your head in the sand.

You should try and read the words people write. Opinions are not formed in a vacuum.

Edit: to be clear- I have no problems with Rust the language beyond some ergonomic concerns. I am not a Rust hater, nor am I a zealot. I do advocate for C# a lot for application code though. But I do not deride others' language preferences. You should not dismiss my observations because I used hyperbole. Obviously not every Rust dev thinks you can't write a secure C/C++ function; don't pick out the one hyperbolic statement to discredit my entire post. Bad form.

← PreviousPage 2 of 12Next →