<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: caspper69</title><link>https://news.ycombinator.com/user?id=caspper69</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 13 Apr 2026 02:59:36 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=caspper69" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by caspper69 in "Inverting the Xorshift128 random number generator"]]></title><description><![CDATA[
<p>I agree. .NET is the opposite of Go. Calls to System.Random use Xoshiro128++ under the hood (as of .NET 6 I believe). On the other hand, calls to RandomNumberGenerator.GetBytes() <i>are</i> cryptographically secure, using the Windows kernel cryptographic provider on Windows and /dev/urandom (chacha20) on Linux and arc4random_buf() on MacOS (which also uses chacha20 under the hood).<p>I ported around 20 RNGs to C# (all non-cs), and there are tons of uses for non-cryptographic RNGs, so I'm a little torn. I guess in modern development most people who need an RNG need it for crypto purposes (I would guess salts, keys and nonces mostly), but I'd hate to see all the Xoshiros, Mersenne Twisters, PCGs, and MWCs, etc. go the way of the dodo simply because they are not deemed fit for crypto purposes. Games, simulations, non-cryptographic hashes all need deterministic and high performance RNGs, and don't need all of the cryptographic guarantees.<p>To top it off, there is no standard definition of what makes an RNG cryptographically secure, so it's a slightly loaded question anyway. Everything I've read says an algo needs the following properties: forward secrecy (unable to guess future outputs given the current state), backward secrecy (if I know current outputs, I shouldn't be able to recover previous internal state or previous outputs), and the output must be indistinguishable from true random bits, even with a chosen-input attack. This is where I politely defer to the expert mathematicians and cryptographers, because I'm not equipped to perform such an analysis.<p>I can understand why things have developed this way though- people have needed random numbers far longer than they've needed cryptographically secure random numbers, so the default is the non-cryptographically secure variant. A language created tomorrow would likely follow in Go's footsteps and default to the cryptographically secure.</p>
]]></description><pubDate>Thu, 04 Sep 2025 18:11:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=45130340</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=45130340</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45130340</guid></item><item><title><![CDATA[New comment by caspper69 in "Does OLAP Need an ORM"]]></title><description><![CDATA[
<p>LINQ? Just throwing it out there; obviously not everybody can or wants to run a C#/.NET stack, but entity framework (core) is about as close as you can get to the perl and regex integration. I think Ruby on Rails gets there too, but I'm not a RoR guy, so I can't comment.</p>
]]></description><pubDate>Sun, 17 Aug 2025 19:12:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=44934075</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=44934075</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44934075</guid></item><item><title><![CDATA[New comment by caspper69 in "The surprise deprecation of GPT-4o for ChatGPT consumers"]]></title><description><![CDATA[
<p>This is disappointing. 4o has been performing great for me, and now I see I only have access to the 5-level models. Already it's not as good. More verbose with technical wording, but it adds very little to what I'm using GPT for.</p>
]]></description><pubDate>Fri, 08 Aug 2025 19:01:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=44840462</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=44840462</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44840462</guid></item><item><title><![CDATA[New comment by caspper69 in "The Windows Subsystem for Linux is now open source"]]></title><description><![CDATA[
<p>I hear this a lot, and I do seem to remember back when I first got Windows 11 I might have seen something stupid like Candy Crush, but I'll be honest, I literally never see ads anywhere in the OS. Truth be told I hardly ever use the start menu since they ruined it, but this complaint about ads everywhere make it sound like a typical webpage. I just don't see it. Maybe because I'm on Win11 Pro?</p>
]]></description><pubDate>Mon, 19 May 2025 20:59:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=44034788</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=44034788</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44034788</guid></item><item><title><![CDATA[New comment by caspper69 in "Show HN: My self-written hobby OS is finally running on my vintage IBM ThinkPad"]]></title><description><![CDATA[
<p>Nice job. Impressive.</p>
]]></description><pubDate>Sat, 26 Apr 2025 16:28:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=43805009</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43805009</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43805009</guid></item><item><title><![CDATA[New comment by caspper69 in "The problem with "vibe coding""]]></title><description><![CDATA[
<p>If I had to guess, probably a couple hundred lines a day, maybe more if I get in a groove or have a deadline.<p>But with an LLM, that number goes to about 500 or so, 200 of which are real code and not definitions of some kind. Truthfully, that’s where the LLMs shine. I have this enum with 50 variants, and need to build a dictionary (with further constraints and more complex objects). That shit takes forever even with cut & paste, unless you code with code, and those one-offs aren’t my cup of tea anymore.</p>
]]></description><pubDate>Thu, 17 Apr 2025 20:05:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=43721568</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43721568</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43721568</guid></item><item><title><![CDATA[New comment by caspper69 in "The problem with "vibe coding""]]></title><description><![CDATA[
<p>I am in the middle of my third AI assisted project. I disagree ~90%.<p>If you prompt an LLM like an architect and feed <i>it</i> code rather than expecting it to write your code, both ChatGPT 4o and Claude 3.7 Sonnet do a great job. Do they mess up? Regularly. But the key is to guide the LLM and not let the LLM guide you, otherwise you'll end up in purgatory.<p>It takes some time to get used to what types of prompts work. Remember, LLMs are just tools; used in a naive way, they can be a drain, but used effectively they can be great. The typing speed alone is something I could never match.<p>But just like anything, you have to know what you're doing. Don't go slapping together a bunch of source files that they spit out. Be specific, be firm, tell it what to review first, what's important and what is not. Mention specific algorithms. Detail exactly how you want something to fit together, or describe shortcomings or pitfalls. I'll be damned if they don't <i>get</i> it most of the time.</p>
]]></description><pubDate>Tue, 15 Apr 2025 04:23:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=43688961</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43688961</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43688961</guid></item><item><title><![CDATA[New comment by caspper69 in "Why F#?"]]></title><description><![CDATA[
<p>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!</p>
]]></description><pubDate>Fri, 04 Apr 2025 01:41:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=43577493</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43577493</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43577493</guid></item><item><title><![CDATA[New comment by caspper69 in "Why F#?"]]></title><description><![CDATA[
<p>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.<p>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.<p>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.</p>
]]></description><pubDate>Thu, 03 Apr 2025 12:28:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=43568652</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43568652</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43568652</guid></item><item><title><![CDATA[New comment by caspper69 in "Why F#?"]]></title><description><![CDATA[
<p>It has been in discussion for quite some time. I believe they'll get there soon: (example) <a href="https://dev.to/canro91/it-seems-the-c-team-is-finally-considering-supporting-discriminated-unions-59k3" rel="nofollow">https://dev.to/canro91/it-seems-the-c-team-is-finally-consid...</a><p>In the interim, MS demonstrates how C# 8.0+ can fake it pretty well with recursive pattern matching: <a href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/patterns" rel="nofollow">https://learn.microsoft.com/en-us/dotnet/csharp/language-ref...</a><p>Not the same I know, and I would love me a true ADT in C#.<p>Edit (a formal proposal): <a href="https://github.com/dotnet/csharplang/blob/18a527bcc1f0bdaf542d8b9a189c50068615b439/proposals/TypeUnions.md" rel="nofollow">https://github.com/dotnet/csharplang/blob/18a527bcc1f0bdaf54...</a></p>
]]></description><pubDate>Tue, 01 Apr 2025 17:06:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=43549140</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43549140</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43549140</guid></item><item><title><![CDATA[New comment by caspper69 in "Convert Linux to Windows"]]></title><description><![CDATA[
<p>I have points to burn, so I'll post, because I <i>know</i> this will scratch some folks the wrong way- apologies in advance.<p>I use Windows. In fact, I <i>like</i> 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.<p>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.<p>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.<p>I also use PowerShell and Windows Scripting on my box when I need to.<p>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).<p>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.<p>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 <i>do</i> run apps that are 20+ years old from time to time.<p>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 <i>different</i> or deficient in some way. The kicker is that my clients don't care about purity or coolness factors.<p>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.<p>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 <i>was</i> 30 years ago. Today? I'd rather hang with my daughter or write some code.<p>These distros have had 35 years. I don't know what else to say.</p>
]]></description><pubDate>Sun, 30 Mar 2025 04:13:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=43521271</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43521271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43521271</guid></item><item><title><![CDATA[New comment by caspper69 in "Xee: A Modern XPath and XSLT Engine in Rust"]]></title><description><![CDATA[
<p>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).<p>We just couldn't keeps apps' hands out of the cookie jar back then.</p>
]]></description><pubDate>Fri, 28 Mar 2025 20:03:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=43509380</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43509380</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43509380</guid></item><item><title><![CDATA[New comment by caspper69 in "A love letter to the CSV format"]]></title><description><![CDATA[
<p>Well, back in my day, we used tabs for tabs.<p>But then some folks came along about 15 years ago screaming about spaces, and they won, so now tabs are 2 or 4 spaces.<p>The law of unintended consequences strikes again!<p>Note: not meant to denigrate you space supporters out there.</p>
]]></description><pubDate>Wed, 26 Mar 2025 18:06:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=43484979</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43484979</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43484979</guid></item><item><title><![CDATA[New comment by caspper69 in "Writing your own C++ standard library from scratch"]]></title><description><![CDATA[
<p>Thank you for the insightful post.</p>
]]></description><pubDate>Wed, 26 Mar 2025 03:13:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=43478516</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43478516</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43478516</guid></item><item><title><![CDATA[New comment by caspper69 in "Writing your own C++ standard library from scratch"]]></title><description><![CDATA[
<p>Interesting that their implementation is Apache 2.0 licensed, yet includes exceptions for LLVM and for GPLv2 licensed code/projects wrt patents.<p>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"?</p>
]]></description><pubDate>Tue, 25 Mar 2025 14:02:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=43471446</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43471446</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43471446</guid></item><item><title><![CDATA[New comment by caspper69 in "Five Kinds of Nondeterminism"]]></title><description><![CDATA[
<p>Understood. It was hard to tell if he was <i>only</i> writing it from the standpoint of FM or if he was speaking more generally.</p>
]]></description><pubDate>Fri, 21 Feb 2025 09:42:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=43125745</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43125745</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43125745</guid></item><item><title><![CDATA[New comment by caspper69 in "Five Kinds of Nondeterminism"]]></title><description><![CDATA[
<p>The article wasn't <i>bad</i>, but the examples felt a bit thin; almost like the author was reaching a bit to hit that magic number of 5.<p>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 <i>truly</i> 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.<p>Also, I have to say- 5 different types of non-determinism, and not one mention of quantum systems?<p>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.</p>
]]></description><pubDate>Fri, 21 Feb 2025 09:00:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=43125539</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43125539</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43125539</guid></item><item><title><![CDATA[New comment by caspper69 in "Greg K-H: "Writing new code in Rust is a win for all of us""]]></title><description><![CDATA[
<p>Thanks for the heads up.</p>
]]></description><pubDate>Fri, 21 Feb 2025 05:47:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=43124395</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43124395</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43124395</guid></item><item><title><![CDATA[New comment by caspper69 in "Greg K-H: "Writing new code in Rust is a win for all of us""]]></title><description><![CDATA[
<p>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.<p>A few that I found: logical operators do <i>not</i> 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).<p>There are a few other oddities in there; no multiple inheritance (but it offers interfaces, so this type of design could just use composition).<p>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.<p>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.<p>Another downside is it's <i>wordy</i>. 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.<p>It has a lot of the features we consider modern, but it doesn't <i>look</i> modern.</p>
]]></description><pubDate>Fri, 21 Feb 2025 02:31:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=43123349</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43123349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43123349</guid></item><item><title><![CDATA[New comment by caspper69 in "My Time at MIT"]]></title><description><![CDATA[
<p>This is the problem with "common knowledge" and "everybody knows" and "gut feelings".<p>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 <i>superficial</i>.<p>You <i>think</i> you know, because how complicated could something be?<p>The public could learn a thing or two by <i>asking questions</i> from people who make these pursuits their lives.<p>For instance, did you ever stop to think that Professors advise students who write papers, and are therefore listed as co-authors?<p>Another knee-jerk would be: look at these professors only putting out 20 papers a year; they are so inefficient- they <i>should</i> be mentoring far more students for the money we pay them.<p>It cuts every way until you <i>talk to people</i>.</p>
]]></description><pubDate>Mon, 17 Feb 2025 18:24:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=43081824</link><dc:creator>caspper69</dc:creator><comments>https://news.ycombinator.com/item?id=43081824</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43081824</guid></item></channel></rss>