HNHacker News
TopNewBestAskShowJobs

instig007

111 karma · joined September 15, 2024

submissionscomments
instig007··on The Isolation Trap: Erlang
GHC Haskell has the best concurrency story among high-level programming languages. SMP parallelism, structured concurrency with M:N multicore mapping, STM transactions for data structures including members of collections (https://hackage.haskell.org/package/stm-containers), and OTP-like primitives (https://haskell-distributed.github.io/). All fit nicely into native binaries on x86_64 and arm64.
instig007··on The United States and Israel have launched a major attack on Iran
Ok, there's clarity on the side approaching negotiations in bad faith then. "Do as I say and when I say" is not a reasonable negotiating track, it's the final ultimatum and there's clarity on who's the aggressor too.
instig007··on The United States and Israel have launched a major attack on Iran
> I've applied it. (That's why you asked for a general principle. Because I'd applied it to this specific case.) They have not been negotiating in good faith.

> My understanding is there was a genuine desire for diplomacy on the American side.

> A case you've sustained by being unable to find any credible sources

Correction: you were unable to find any credible sources, that could be your intentional bias though, as there are other patterns in your replies that suggest it too.

Also, you didn't apply the principle, you sought external validation to your preferred understanding. You appeal to external voices because there's the evident apprehension to come to inconvenient conclusions if you begin applying the principle uniformly by using your own mind.

Actually, let's see it live. Please provide the line of reasoning, starting with "If the US diplomats' job is to stall and never make any actual concessions to Iran, then ..."

> there was a genuine desire for diplomacy on the American side

By the way, how does that "genuine desire" manifest in reality? I hope it's not "I got those people in front of me extra five minutes to get lost and free my way home"

instig007··on The United States and Israel have launched a major attack on Iran
> Uh sure, yes, it generalizes. Not sure what that does for you, but yes.

ok, let's see

> do you have a source? The fact that nobody in this subthread has an answer to this and is instead, as you put it, evading the question by getting distracted by whether America is negotiating in good faith should speak volumes to anyone reading this.

No it shouldn't, there's no substance in your position, let alone volumes of any meaning to derive from it: "the other side must be acting in bad faith, because I don't like getting home late".

First off, I'm waiting for you to apply your previously stated principle, that you admitted to be general, to Iranian diplomats' negotiating track. And right after that, let's discuss why you did omit commenting on the other part with the substitutions around "giving in to America or Iran" and the respective interest groups having to save face.

I, as a barefoot landlord, am still wondering: why do you think your timings and preferences are the only ones to be respected?

instig007··on The United States and Israel have launched a major attack on Iran
> Read past "are you asking serious questions." I literally answer it.

ok, you evaded the answer, I asked specifically about generality of the principle, you kept saying "the US did this, Iran did that". You're stalling and refusing to tell the actual answer on the question I asked, so that's germane.

> I haven't seen anything in any English, European or Asian sources that seemed to suggest they were.

too bad, get better with search

> Negotiating in good faith means negotiating with a genuine intent to reach a deal. That requires acknowledging what the other side is saying and respecting reality. Someone can intentionally bullshit. Or they can be forced to bullshit because their regime at home has to save face and doesn't think it can survive being seen as giving in to America.

Negotiating in good faith means negotiating with a genuine intent to reach a deal. That requires acknowledging what the other side is saying and respecting reality. Someone can intentionally bullshit. Or they can be forced to bullshit because their political leaders at home have to save face before their donors and don't think they can survive elections being seen as giving in to Iran.

> Bad analogy. Here's a better one: you're my landlord and I'm your tenant. (Ignoring the power imbalance between Iran and America, particularly when America is parking warships, is delusional.) You say I have ten minutes to plead for not being evicted. I genuinely don't think I did anything wrong. But I spend ten minutes talking about why your shoes are stupid. That's not engaging in good faith.

Bad analogy, I walk barefoot and I don't talk to tenants, my representatives do and they end the contract with you on a legal basis of contractual terms and that's about it. That's my property after all.

Now, you in turn are still standing in a traffic jam and getting angry at me and people around you, you claim that we all don't respect your preferences and timings, so we must be acting in bad faith.

instig007··on The United States and Israel have launched a major attack on Iran
> Are you asking serious questions?

Just answer the question whether it applies in general as a principle. Don't "stall and never tell any actual" position on the matter.

> We also had the option to terminate negotiations, ratchet up sanctions and walk away. None of that changes that the Iranians weren't negotiating in good faith

Only according to you, based on the premise that someone didn't meet random timings that only exist in your head.

> But the lack of any discussion of what Iran did in this subthread seems to underline my point

not really, please answer the initial question I asked.

> They aren't obligated to accept the other's timeline. But I wouldn't say that's negotiating in good faith.

Exactly why? You need to be home around 5 so anyone standing in front of you and blocking you in a traffic jam aren't acting in good faith?

instig007··on The United States and Israel have launched a major attack on Iran
> If the diplomats' job is to stall and never make any actual concessions, that's germane.

does this line of reasoning apply to the US only, or in general?

> My understanding is there was a genuine desire for diplomacy on the American side. But at least this round, Tehran never conceded on any material fronts.

they had an option to do it and still continue a diplomatic track, they aren't obliged to devote themselves to the US preferences at the US-preferred pace.

instig007··on The United States and Israel have launched a major attack on Iran
you don't need an analyst to see who strikes first (and the frequency of that pattern) while diplomats are still at the negotiating table
instig007··on Technical Excellence Is Not Enough
> Ignoring it costs more later, but later is someone else's problem.

and then the blame could be shifted to the future generations, it's their incompetence after all.

> Correctness wins when the cost of ignoring it becomes impossible to miss: an outage, a customer complaint, data loss. Until then, comfort wins every time.

Those who tolerate comfort-winning aren't engineers and shouldn't be admitted to stand close to engineering systems overall, especially outside the software industry.

instig007··on Parse, Don't Validate and Type-Driven Design in Rust
> Yea, so again. Isn't that freaking obvious?!

apparently not, as I always find snippets of patterns of this kind from my coworkers (and I've worked in many companies, including the ones that require precision for legal compliance):

    def do_business_stuff(data):
        orders = data.get("orders")
        if not orders:
            return
        for order in orders:
            attr = order.get("attr")
            if attr and len(attr) < 5:
                continue
            ...
The industry's awareness baseline is very low, and it's across tech stacks, Haskell is no exception. I've seen stuff people do with Haskell at 9 to 5 when the only thing devs cared about was to carry on (and preferably migrate to Go), and I wasn't impressed at all (compared to pure gems that can be found on Hackage). So in that sense having the article that says "actually parse once, don't validate everywhere" is very useful, as you can keep sending the link over and over again until people either get tired of you or learn the pattern.
instig007··on Parse, Don't Validate and Type-Driven Design in Rust
You put them however you like, be it in a char or a vector of, but the bottom line is that your parsed items are part of the "sanitized" label that allows you to either tuple-unpack or pattern-match (as long as it's near or literally zero-cost) without performing the same validation ever again for the lifetime of the parsed object. The callees that exclusively expect 'a', 'b' and 'c', and for which they perform internal validation step, should be replaced with versions that permit the inputs with sanitized labels only. How you implement the labels depends on the language at hand, in case of Haskell they can be newtypes or labelled GADTs, but the crucial part is: the "validation" word is systematically pushed to the program boundaries, where it's made part of the parsing interface with `Alternative f` and sanitization labels acting on raw data. In other words you collapse validation into a process of parsing where the result value is already being assembled from a sequence of decisions to branch either with one of the possible successful options or with an error.
instig007··on Parse, Don't Validate and Type-Driven Design in Rust
Validating during parsing is still parsing, there's a reason why `Alternative f` exists after all: you have to choose between branches of possibilities and falsehoods. Now consider that there's another kind of validation that happens outside of program boundaries (where broader-than-needed data is being constrained in a callee rather than the calling site) that should've been expresed as `Alternative f` during parsing instead. That's the main point of the article, but you seem to only focus on the literal occurence of the word "validation" here and there.
instig007··on Parse, Don't Validate and Type-Driven Design in Rust
You can have range-constrained numeric types and collections in Haskell via Liquid Haskell, which has almost seamless integration with the compiler starting from GHC-9.12+
instig007··on Ireland rolls out basic income scheme for artists
Farms can be subsidized by people with money, the ones that you tell have to pay taxes to a proxy that spends it without accountability for the productivity of spending.

> You can't pick and choose parts of society that benefit you and opt out of your duties, that's not how society works.

of course I can, actually the more money I have the more options to exercise this ability are available to me. And there are no inherent duties to benefit someone you're not choosing to help, unless your society is cattle.

instig007··on Farewell, Rust for web
> I know of one person who got fired from a project due to no small fact that building the system he was presented with took > 24 hours when a full build was triggered, and this happened every week.

Incremental Nix builds can take less than 1 munute to build everything, including the final deployable docker image with a single binary on very large Haskell codebases. That fact the the person was fired for everybody around him systematically failing to admit and resolve a missing piece of supportive infrastructure for the engineering effort of one person tells a lot about the overall level of competence in that team.

> but ultimately it is a failing of the "everything and the kitchen sink" philosophy at play in dependency usage.

Not really, as the kitchen sink only has to build once per its version change, for all future linkage with your software for the entire engineering team doing the builds in parallel.

instig007··on Ireland rolls out basic income scheme for artists
the unearned money gets spent on real produce you were to say.
instig007··on Ireland rolls out basic income scheme for artists
> You've always had the option to move somewhere far away from society where you could keep 100% of what you make on your own.

Ah the good old "if you're homeless just buy a house" argument, only this time coming from the mentality of a statist.

instig007··on Ireland rolls out basic income scheme for artists
> What determines fairness is how the resources in our society are allocated once all is said and done.

I propose allocating upfront the work, so that those who disagree don't have to contribute into the "done" part of those who allocate it in a weird way.

instig007··on Ireland rolls out basic income scheme for artists
> create cultural wealth and people who create mere monetary wealth

the wealth in this case isn't monetary, it's material production, the productive work of people who create material objects, including your food and shelter. If it was about monetary stuff the government would just print the artists whatever amount of money they need. But that money has to be spent to buy from those who produce the stuff the artists need to live. Who's sponsoring the wealth producers?

instig007··on GitHub Actions is slowly killing engineering teams
> I mostly agree

> managed to throw AI efficiently

> and it mostly worked.

Looks like you're mostly doing your job, not quite there, but mostly

instig007··on Typechecking is undecidable when 'type' is a type (1989) [pdf]
> What you want is guarantees that correct programs typecheck quickly.

In practice there's wealth of lemmas provided to you within the inference environment in a way standard library functions are provided in conventional languages. Those act like a memoization cache for the purpose of proving your program's propositions. A compiler can also offer a flag to either proceed with ("trust me, it will infer in time") or reject the immediately undecidable stuff.

instig007··on Code is cheap. Show me the talk
> My point is that it is easier to get AI to get better than try to improve a million developers.

No it's not, your whole premise is invalid both in terms of financing the effort and in the AI's ability to improve beyond RNG+parroting. The AI code agents produce shoe boxes, your claim is that they can be improved to produce buildings instead. It won't happen, not until you get rid of the "temperature" (newspeak for RNG) and replace it with conceptual cognition.

instig007··on Code is cheap. Show me the talk
> This is the "artisanal clothing argument".

> it is easier to 'discipline' the top 5 AI agents in the planet - rather than try to get a million distributed devs ("artisans") to produce high quality results.

Your take essentially is "let's live in a shoe box, packaging pipelines produce them cheaply en masse, who needs slow poke construction engineers and architects anymore"

instig007··on AI’s impact on engineering jobs may be different than expected
> Also, the assumption that you can do ___ thing

...

3. profit

4. bro down

instig007··on Use "\A \z", not "^ $" with Python regular expressions
ABC: Always. Build on. Parser Combinators.

Python ecosystem has several options, for instance: https://parsy.readthedocs.io/en/latest/tutorial.html

instig007··on Article by article, how Big Tech shaped the EU's roll-back of digital rights
Is there a list of MEPs who are just right, without the far prefix?
instig007··on Eight European countries face 10% tariff for opposing US control of Greenland
> ASML relies on the United States for several of its components, and it’s this very reliance that has allowed the United States to use the Foreign Direct Product Rule and impose export controls on ASML products. However, there are signs of a shift. ASML has already started to reduce its dependence on American technology, aligning with the EU’s goal of strategic autonomy. Earlier this month, ASML announced a major investment in Mistral, France’s flagship AI startup. The Dutch firm invested $1.5 billion in Mistral, becoming the company’s largest shareholder. The deal was widely seen by policymakers as a move that strengthens European ‘digital sovereignty.’ In a sector dominated by American tech giants, ASML’s Mistral investment represents a growing realization from Europe: cooperation within the bloc is necessary for the EU to stay competitive in the AI race.

---

I don't follow, how exactly does the investment into a French AI startup reduce ASML's "dependence on American technology"? Is it a supply-chain dependence, or a revenue-making dependence?

instig007··on Eight European countries face 10% tariff for opposing US control of Greenland
> ASML

Who's the customer base of ASML? Are they predominantly based in Europe?

instig007··on The Gleam Programming Language
> I’m not as certain. The fact that we’ve gone from ASN.1 to COBRA/SOAP to protobuf to Cap’n’web and all the million other items I didn’t list says something.

> It absolutely is a decades old set of problems that have never been solved to the satisfaction of most users.

ASN.1 wasn't in the same problem space with CORBA/DCOM, both CORBA and DCOM/OLE were heavily invested in a general-purpose non-domain-specific object model representation that would suppot arbitrary embeddings within an open-ended range of software. I suspect this is the unsolvable problem indeed, but I also believe that's not what you meant with your comment either, since all the known large-scale BEAM deployments (the comment I originally replied to implied BEAM deployments) operate within bounded domain spaces such as telecom and messaging, where distributed properties of the systems are known upfront: there are existing formats, protocols of exchange, and the finite number of valid interactions between entities/actors of the network, the embeddings are either non-existent or limited to a finite set of media such as static images, videos, maps, contacts etc. All of these can be encoded by a compile-time specification that gets published for all parties upfront.

> basic questions like “should optionality/absence be encoded differently than unset default values?”

However you like, any monoid would work here. I would argue that [a] and [] always win over (Option a) and especially over (Option [a]).

> and “how should we encode forward compatibility?”

If you'd like to learn if there's a spec-driven typed way of achieving that, you can start your research from this sample implementation atop json: https://github.com/typeable/schematic?tab=readme-ov-file#mig...

instig007··on The Gleam Programming Language
> When you add distribution you cannot make as many assumptions

You absolutely can make all assumptions relevant to the handling/dispatching logic expressed at type-level.

> and as such you encode that into the type with a bunch of optionals.

Not necessarily, it can be `Alternative f` of non-optional compound types that define the further actions downstream.

> Once you have gotten everything into optionals, you’re effectively doing the same checks you’d be doing with a dynamic language everywhere anyway.

Not true, your business logic can be dispatched based on a single pattern comparison of the result of the `Alternative f`.

← PreviousPage 2 of 7Next →