Earlier quoted context omitted.
uv still can't build all wheels and afaik they don't intend to do so. Furthermore they leave their users with 0 indication that the build fails because the wheel is unsupported by uv. If I were a beginnner or intermediate, I'd definitely given up after some attempts of fixing the buildsystem/code of the wheel. I don't get how uv regularly gets recommended without any note about this.
(I work on uv.) Can you say more? uv should always tell you if a wheel build fails, unless the build backend (which uv doesn’t control, unless you use uv’s own backend) decides to silently ignore a wheel build. This would be a bug in any given build backend IMO. This is an unfortunate complexity in Python packaging: something like `uv build` can dispatch a wheel build for you, but the actual code that gets run as par…
After 7 years in production, Scarf has reluctantly moved away from Haskell
281–290 of 320 posts
Re: After 7 years in production, Scarf has reluctantly moved away from Haskell
#282Earlier quoted context omitted.
The issue with formal proofs is that we might end up with correct code that does the wrong thing. I mean, something that the market doesn't care about. At the same time a buggy set of PHP scripts does what people care about and captures the market. Think about 20+ years ago and you find a lot of examples.
https://xkcd.com/224/ lol Zuckerberg became rich on php, which grinds my gears almost as much as the genocide thing. In fairness, my peers at $corp used to ship while I was sad-Wojciech "no you can't create tech debt". The universe is cruel to people who care.
Re: After 7 years in production, Scarf has reluctantly moved away from Haskell
#283Earlier quoted context omitted.
> I can't imagine using a language without a good type system have you tried? i use elixir and carefully watch the agents and its very seldom making typing mistakes (elixir is in-between, it's typed but only as a checker). ultimately typing doesn't help as much because it's nonlocal information. if the system can locally infer what the shape of functions is, it's way better.
"i use elixir and carefully watch" - I do not watch agents, at all. Rust and Typescript. When I use Typescript only I have some guidelines so that we build the stack to be as strict and type driven as possible.
next features are integrating a small transformer i built to codon optimize and probably "slack" to better communicate with the 2 ppl who work for me.
is your rust+typescript project at that level of complexity?
Re: After 7 years in production, Scarf has reluctantly moved away from Haskell
#284Earlier quoted context omitted.
"i use elixir and carefully watch" - I do not watch agents, at all. Rust and Typescript. When I use Typescript only I have some guidelines so that we build the stack to be as strict and type driven as possible.
Similar for me, I don’t want to babysit agents . I’m sticking with Python for the libraries (data science ecosystem), but I find that imposing ty and a few reasonable ruff rules (imposed with pre-commit so the agent can fix things automatically) improves agent-generated code a lot.
Re: After 7 years in production, Scarf has reluctantly moved away from Haskell
#285Earlier quoted context omitted.
The usage stats on GitHub are declining, for example. Devs are choosing Kotlin, Rust, and Go over Scala. IMHO there are a bunch of reasons * Scala 3 was a Python 3-esque disruptive event * Perception as an overly-complex kitchen-sink inclusive language * Kotlin took up the "better Java" mantle * Rust became attractive to devs not committed to the JVM * Go became less sucky * SBT is disliked and Metals was buggy and u…
I don't think that Devs making those chooses but business and industry forcing devs to explore other options. One of the main issues with Scala currently that is no good selling story anymore for a business peoples. Even Rust story with 'memory safety' very fragile because not a lot of businesses see it as huge issue which worth additional effort (probably only MS backing helps there). In the past it was lot of selli…
And no, Oracle lawsuit hardly has a role into it, as Android is still mostly all about Java ecosystem, Gradle, InteliJ, Android Java gets updated even if sloooowly (Java 17 LTS currently).
Had this not been the case and it would be yet another JVM guest language.
Re: After 7 years in production, Scarf has reluctantly moved away from Haskell
#286Earlier quoted context omitted.
Lisp/smalltalk programmers have been going on about this tradeoff for a long time. It mattered before LLMs too. Lisp/Clojure repl allowing you to compile tiny parts of your program inside your running program is incredible for your feedback/iteration loop. Ironically, this is also what makes them shine with LLMs, the LLM has access to the running program and can modify it while it's running to get feedback instantly.…
> I say this as someone who's first programming language was Haskell. Amazing. How did that happen? Is it true that functional programming is only counterintuitive because almost everyone starts out with an imperative language?
Yes, imperative languages were initially counter intuitive to me. OO was even worse. SQL was fine as it's more declarative/functional.
Re: After 7 years in production, Scarf has reluctantly moved away from Haskell
#287I strongly agree with the premise of this article, which is why I am surprised that the author moved away from Haskell to Python. For some time now it’s felt clear (or at least extremely) compelling that agents need fast compile times in order to be effective, especially when you’re working in parallel. But the other thing that has felt just as obvious is that agents need strong type systems and narrow guardrails in…
This feels like someone giving a great commencement speech, then proceeding to pull out a gun and shoot himself in the foot as the final act.
Re: After 7 years in production, Scarf has reluctantly moved away from Haskell
#288Earlier quoted context omitted.
Languages like C and Go are so weak in the type system that it barely feels better than fully dynamic languages.
At least in C and Go, you can get structs where it's easy to reason about the fields. In Python, a "class" is simply a dict under the covers and (by default at least) you can add attributes to it after definition (as well as things like properties). So it's difficult to reason about what the fields are at any given time. And that's assuming people USE classes! I've seen code where all the state is in one giant ever-c…
Re: After 7 years in production, Scarf has reluctantly moved away from Haskell
#289Earlier quoted context omitted.
At least in C and Go, you can get structs where it's easy to reason about the fields. In Python, a "class" is simply a dict under the covers and (by default at least) you can add attributes to it after definition (as well as things like properties). So it's difficult to reason about what the fields are at any given time. And that's assuming people USE classes! I've seen code where all the state is in one giant ever-c…
I don’t believe that “reasoning” is very useful in large code bases written by multiple developers. If you are trying to be axiomatic and prove to yourself that the code is correct, there are a thousand different ways the part of the code may not support your axioms in ways that are not apparent. It’s better to have a handful of invariants that are well communicated to the team and a lot of tests.
I think Go developers don't think this is much of a problem because most of them are working on microservices where data is not kept around for a long time (usually a single request). And of course Go makes it a lot easier to handle data-access parallelism. So the benefits of a powerful type system are somewhat diminished in this scenario.
I think it is one of the reasons why Go devs don't see much benefit in Rust, the borrow checker is just not that useful in the context of isolated requests.
Re: After 7 years in production, Scarf has reluctantly moved away from Haskell
#290Earlier quoted context omitted.
There's absolutely no way that's true.
My experience is only anecdotal but I can assure you it is true!
* Few bugs occurred due to type issues (which I think you are asserting)
* You can design your program with types so that what would be a bug due to a type issue doesn't compile (which IshKebab may be thinking)
Both of these can be true at once