Wow, what an apples and aliens comparison. You add a bunch of transaction delays to your postgresql case because you can access a database over a network, but you use transaction batching for sqlite? Maybe just compare a local postgresql with/without batching to a local sqlite with/without batching to be much less misleading.
Because local postgres is a bad time unlesss it's the only thing running on the server. Even then sqlite will smoke postgres (even with unix sockets).
The point is to survive the Pareto row locking problem you need to move away from a network database (if you want to still have interactive transactions). The network part is the main point of a network database, once you drop that there's not much pointing sticking with the added complexity unless there's another feature you really need.
> What’s an example of a unionized vs non unionized group producing the same thing where unionized is better?
Here's a layup: art. Remember the writer's union strike in 2007-2008? All of the shows whose writers were on strike that still went on were terrible.
Edit: also, the purpose of a union is not to "produce something better". The purpose of a union is to protect workers' rights. They generally serve their purpose very well.
Assuming your comment applies to Common Lisp as well, if Scheme (and Lisp) truly was, "hard to read, unfit for most purposes and that even proficient coders never seem to fully grasp," it wouldn't be the language that introduced so many features later implemented in other languages.
> Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, conditionals, higher-order functions, recursion, the self-hosting compiler, and the read–eval–print loop.
So many proficient coders were able to grasp features of Lisp, find the fitness of those features, and implement them in their own languages.
> types don’t have their core functions associated with them concretely.
They do in Racket? You look at the "List" documentation and you find all of the functions for lists. Likewise with hash tables, numbers, strings, sequences, files, etc.
> The only way to know strcat, puts, and strlen exist is…
... to look at the documentation on docs.racket-lang.org. The powerful search includes results not only for the standard ("batteries included") library reference, but also the standard guide and 3rd party libraries.
> once I had my traits that I also wanted compile-time attributes à la Rust/C# and there’s no clean way to add those to Lisp’s syntax
I mean, why are you not able to do (trait whatever) before (define whatever) or (for-each whatever) or (let whatever)?
> Lisp is neat but it just doesn’t fit in the future of programming that Rust and C#
Have you tried it or did you just try to figure out why you don't think you like it from an LLM?
As far as I know, Racket docs are entirely human-generated. The functions aren’t tied concretely together to types by anything. In C#, types and their member functions are automatically tied and inspectable in code. That’s what I feel is missing. Also, I don’t want to take away from the phenomenal Racket docs. They’re a real treat to work with.
If you're referring to C# (and Java) being the Kingdom of Nouns where a type like ArrayList is defined and contains its methods, sure, Lisp is not exactly like that, but I feel like conventions give you a similar experience. For example, functions related to hash tables all have `hash` in their name and are either constructors or they take a `hash` argument. They are contained in their own file (hash.rkt).
Also, doesn't inheritance interfere a bit with your "functions aren't tied concretely together to types" observation? You can examine a source file for ArrayList, but if it extends List, you may not see everything you expect to see, and would just defer to the docs to help you out (or click through more source files).
I assume Racket contracts can handle your concern about relating functions and types. An IDE or static analysis tool can help you find all of the functions that operate on a `dict` type if you don't want to rely on conventions where you just seek out a dict.rkt file.
For what it's worth, coming from lots of Java experience, as a Racket novice, I poked around the Racket internals and added Candlesticks to its `plot` library [0] and removed a call to a deprecated gdk function that was causing overhead when drawing text [1]. It never felt like an insurmountable task just because methods aren't defined within types.
By finding problems with Lisp, you are finding problems with s-expressions, which, to me, are so plainly superior to XML and JSON for defining data that I wish more languages would at least consider adopting them for data definitions.
> I assume Racket contracts can handle your concern about relating functions and types
contracts are not real types enforced by the compiler/runtime. that means you need to keep them in sync manually and you dont get performance benefits from typed vm instructions. you also lose a big safety net that makes sure you always call a function that can handle the values you pass in. the whole industry has been moving towards ml style strong types for the last 10 years and its for a good reason
When my dad got his Computer science degree at Queens University (Ontario) in the late 1970s, there was an entire faculty-sized building on campus with no windows and few doors. This wasn’t just the CompSci department, the building WAS the computer.
This. It's extremely frustrating, AI can be a 24/7 tutor, but too many students use it to do their work instead.
We have to really rethink how and what we teach, and how we evaluate. Scoring (non-handwritten) homework is pointless, even contra-productive (because it incentivizes cheating, even for the students who don't want to, just to not be outscored by the cheaters). Hand-written homework means the students at least have to have read the work once...
And soon, with AI glasses, even in-classroom tests will be difficult.
Universities provide the AI to students. We have CoPilot in our 365 and the Ed majors get free AI crap all the time. Hard to make drugs illegal when you're the dealer
> would be the worst geopolitical move of the century
From a political perspective, perhaps.
> doing it forcefully just isn't something China would realistically do
From a military perspective, taking Taiwan by force would allow China to, "threaten the sea lines of communication and to strengthen its sea-based nuclear deterrent in ways that it is unlikely to otherwise be able to do." Taiwan would give China access to the Philippine Sea. https://gwern.net/doc/technology/2022-green.pdf
Their valuation is crazy. Trading at $260, with no profit, their price:sales ratio was 36x (extremely high). Now, trading at $195, their price:forward earnings ratio is 130x (extremely high). Unless they crushed earnings and revenue estimates and juiced their forward guidance, Cloudflare stock could have gone anywhere. Also, the stock is trading where it was a month ago.
Indeed. COIN releases earnings on May 7 in the evening. Q4 2025 was the first quarter where they had a negative EPS in the past couple years. Most analyst estimates for Q1 2026 are trending downward. This "difficult decision" seems to be all about getting in front of a bad earnings release.
reply