HackerLangs
TopNewTrendsCommentsPastAskShowJobs

samatman

no profile record

comments

samatman
·قبل 14 يومًا·discuss
Vorons are great! https://www.vorondesign.com

You've come a long way, RepRap.
samatman
·قبل 14 يومًا·discuss
In five years Europe will be buying their inference machines from Apple, like everyone else.
samatman
·قبل 14 يومًا·discuss
Yep, American tourism is in shambles. Everyone's terrified

...because the USA made it into the knockout stage. really scary stuff
samatman
·قبل 15 يومًا·discuss
You're not wrong, Walter...
samatman
·قبل 15 يومًا·discuss
I love it. Easily one of my favorite things about the language.

Example: shifting more than the width of the shifted integer is illegal behavior in Zig: therefore, the, what, shiftand? let's go with that, the shiftand for a u64 must be a u6 or smaller.

Sounds annoying? No, it's great! Check this out:

    const CodeUnitKind = enum(u2) {
        low, 
        high,
        follow,
        lead,
    };

    const CodeUnit = packed struct(u8) {
        val: u6,
        kind: CodeUnitKind,
    };
It's really nice!
samatman
·قبل 15 يومًا·discuss
I understand the reaction, but I don't agree. I suggest reading the associated proposal[0] along with the devlog, and having a real think about what's going on here. I'm responding to you saying that you "don't understand" the approach: reasonable, and resembles my initial reaction.

I was inclined to agree with you, but what decided it for me is that Zig has another mechanism for "reinterpret bytes". It's exposed on the stdlib as std.mem.asBytes, but this is literally a wrapper for the following:

    @ptrCast(@alignCast(ptr));
So nothing is lost here: if you need, for whatever reason (and those do exist), to get a raw array of underlying bytes, you absolutely may. Std.mem also has bytesToValue(T, bytes) T, which makes a copy. All the ingredients are there, and this family of mem functions are thin wrappers over builtins, which boil down to pointer casting, dereferencing, and comptime magic.

Also worth noting: packed structs in Zig are already defined as logically little-endian: the first field is of low significance, the second is above that, and so on. So this makes `@bitCast` consistent with an existing convention of treating integers as logically little-ended, without regard to how they're actually arrayed in memory.

Plus it stands to make low-level bit-twiddling, using oddly-sized integers, optimize better. I like that, especially when what we trade for that is: nothing. Nothing at all, this is a pure win.

I'd even guess it's that rare language update which silently fixes buggy code, where someone figured "well, basically everything is little-endian already" (or just didn't think about it), and now that code works properly on big-endian machines.

[0]: https://github.com/ziglang/zig/issues/19755
samatman
·قبل شهرين·discuss
"Things might change in the future" is a perfectly general statement which applies to any state of affairs which is not restricted by natural law.

That makes it very nearly meaningless.
samatman
·قبل شهرين·discuss
It's fascinating how intuitions differ. To me, it doesn't feel like theft at all. For one thing, theft is depriving another of something, and has therefore never been a good metaphor for infringement; hackers used to be the most insistent about this principle, and it's weird to see a doctrine which was cooked up in a literal AI lab get thrown out the window for literal AI.

But pretending you said "infringement", for me it comes all the way back to the Constitution: "To promote the Progress of Science and useful Arts". I cannot possibly twist the development of large language models into something which violates the spirit of that purpose. I don't see how anyone can.

Your point about the scale is valid, and the alienness of it, sure. But you haven't made the case that the vastness of the scale should affect the conclusion.

Something I left out in the first post is that copyright is meant to protect expression, and not ideas: this is the deciding factor in the 'nature of the copyrighted work' test for fair use. More expression, more protection: more ideas, less.

I think the visual arts have a strong case that image generators directly infringe expression: I'm not convinced that authors do, and I think software should never have been protected under copyright because the ideas-to-expression ratio is all wrong for the legal structure. There's clearly no scale case to be made for ideas: "but what if it's _all_ the ideas" fails, because the ideas are not protected at all. Nor should they be, that's what patents are for, and why patents are very different from copyright.

LLMs are remarkably good at 'the facts of the matter', hallucination not withstanding. They're very poor at authorial 'voice transfer', something image generators are far too good at. It's when I start asking myself "well what even _is_ this 'expression' thing anyway?" that I conclude that we're out over our skis on the LLMs-and-IP question: precedent can't tell us enough, and that leaves legislation.
samatman
·قبل شهرين·discuss
As an experiment, I ran this by A Certain Chatbot, but asking: who should I read to get a good answer to this question?

If you prefix the name of OpenAI's commercial offering's website to this string: "share/6a0f2a87-dba4-8328-a704-89b94fd0c121", you'll find an answer.

I don't know who you had in mind, how did it do?

All the elision is because there are filters to prevent low-effort slop-poasting, and I'm trying to evade them, hopefully while staying within the spirit of the site.
samatman
·قبل شهرين·discuss
It's more complicated than that. Quite a bit more.

Commercial use counts _against_ a fair use defense, but is not dispositive: it's not accurate at all to say it "generally does not cover" commercial use. This is the "purpose and character" test, one of four in contemporary (United States) fair use doctrine.

Purpose and character also includes the degree to which a use is _transformative_. It's clear that the degree to which a training run mulching texts "transforms" them is very high. This counts toward a fair use finding for purpose and character.

> is dependent on the amount of the original content present in the derived work, which I would contend in this case is “all of it”

The "amount and substantiality" test. Your case for "all of it" can't possibly be sustained: the models aren't big enough. It's amount _and_ substantiality: this has come up in the publication of concordances, where a relatively large amount of a copyrighted work appears, but it's chopped up and ordered in a way which is no longer substantially the same. Courts have ruled that this kind of text is fair use, pretty consistently. It's not an LLM, of course, but those have yet to be ruled on.

Also worth knowing that courts have never accepted reading or studying a work as incorporation, and are unlikely to change course on the question. It's taken for granted that anyone is allowed to read a copyrighted work in as much detail as they wish, in the course of producing another one. Model training isn't reading either, but the question is to what degree it resembles study. I'd say, more than not.

Specifically:

> it’s impossible to make a useful model without the whole book and all of the artistry that went into it

Courts have never once accepted "it would be impossible for defendant to write his biography without reading plaintiff's" as valid, and it's been tried. The standard for plagiarism is higher than that.

"Effect upon the work's value" is probably the most interesting one. For some things, extreme, for others, negligible. I suspect this is the one courts are going to spend the most time on as all of these questions are litigated.

Ultimately, model training is highly out-of-distribution for the common law questions involving fair use. It was not anticipated by statute, to put it mildly. The best solution to that kind of dilemma is more statute, and we'll probably see that, but, I don't think you'll be happy with the result, given what I'm replying to. Just a guess on my part.
samatman
·قبل شهرين·discuss
It may interest you to know that this was a misremembered truth.

It is widely believed by their neighbors, that the _Druze_ wear baggy pants because they believe that the Mahdi will be born to a male, and the pants will catch the baby etc. I say "widely believed", the Druze are famously secretive and will not confirm or deny most things about their religion. The 'elect' Druze men do wear distinctive baggy trousers with the crotch down around the knees: no one else does.

The Druze are people in the Arabic world: moreover, they are Arabs. They began as an Isma'ili sect, but do not identify as Muslim: they call themselves al-Muwaḥḥidūn, meaning 'the monotheists', or 'unitarians'.

Much closer to correct than not!
samatman
·قبل شهرين·discuss
Well yes, but the _effect_ is to unroll the loop for runtime, if the inline-for survives that long.

A for loop executed during comptime is just

    const stuff = comptime stuff: {
       for (0...8) |i| {
         // etc, build up some stuff
       }
       break :stuff some_stuff;
    };
The difference is that a comptime block won't leave behind runnable 'residue', only whatever data is constructed for later. An inline for might not leave behind an unrolled loop either, but it can.
samatman
·قبل شهرين·discuss
Is it older than March 2025?

The first year was rough, from what I've read. Mine arrived March 2025, it has taken no work to print excellently, and at about 700 hours I have lubricated it every 200 hours, and I just tightened the belts about 50 hours ago. That's it. If it's less than $100 a roll I've probably printed it. I have no complaints.
samatman
·قبل شهرين·discuss
Dusting off my HN credentials to plug Qidi.

If you can afford to pay more for less printer, get a Prusa Core One. I almost did, but at the time the cost would have included four months of waiting, and that was just too much.

But the Qidi Plus 4 has been just a beast for me. It had some growing pains, and the Internet is forever, so if you read up on it you'll see some scary-looking problems involving the heating element which have been completely fixed for more than a year. From everything I've been able to determine, the QC issues with the Plus 4 are over, and the newer printers like the Q2 and Max 4 have never had them.

I think the intersection of "reads HN" and "needs that tiny delta of convenience between Bambu and Qidi" is empty, basically. Qidi are good open source citizens, and you get a lot of bang for your buck, especially handling high-temp filaments. It's _possible_ to print nylon and ABS on Bambu hardware, but realistically you want something a little better.

Also they're cheaper than Bambu. Thought that was worth mentioning as well.

I'd seriously consider the Snapmaker U1 also, but not the K2 Plus. For one thing, Creality has had to be bullied several times to meet GPL obligations, and I don't like to reward that kind of behavior. For another, the Qidi Max4 is bigger, prints hotter, is more precise, and costs less. Pareto improvement on the K2 Plus.

I'm holding out on the Snapmaker because a) my Qidi Plus 4 is a great piece of hardware and at only 700 hours it's got a lot of life left in it, and b) The Prusa + Bondtech INDX is right around the corner. That's probably going to be my next printer. I find the waste and extreme slowness of AMS-style multimaterial too distasteful to invest in, and I think that entire paradigm will end up in the dustbin as tool-changing consumer FDM matures.
samatman
·قبل سنتين·discuss
I have this as a system-wide mapping with Karabiner. Complex modifications, "Post esc if left_alt is pressed alone".

There's never a time when I wouldn't want this to work, may as well enable it everywhere.

Edit: It looks like I misunderstood what that setting in iTerm does. But hey if you do want left option to send Esc by itself, that's how to get it.
samatman
·قبل سنتين·discuss
WezTerm has emulated tabs, not OS-native tabs. Some people will find that to be enough to suit their needs. Others will want 'real tabs'.

For example, I can select a tab in Ghostty, pull it out into its own window, and then stick it into another window. This doesn't work in WezTerm, nor can you drag them around to rearrange them (keyboard shortcuts allow this however).
samatman
·قبل سنتين·discuss
Benjamin Pierce is entitled to his opinion, which you have posted over and over as though it were carved upon stone tablets. "One guy says that dynamic typing is arguably a misnomer" is not a strong case.

The Wikipedia article on type systems is well sourced and fairly well written:

https://en.wikipedia.org/wiki/Type_system

It has this section:

https://en.wikipedia.org/wiki/Type_system#Dynamic_type_check...

Here's a pull quote:

> Dynamic type checking is the process of verifying the type safety of a program at runtime. Implementations of dynamically type-checked languages generally associate each runtime object with a type tag (i.e., a reference to a type) containing its type information.

This accords with ordinary usage in the profession, agreeing with the person you're disagreeing with. You should read it. It provides no support at all for the argument that Python is untyped in any sense. It quotes Pierce several times, including the first citation, so it isn't ignorance on the editor's part.

You are advancing the argument that type theory, as you understand it (there being many paper-publishing respectable academics who do not agree with you on this), trumps type systems in practice, but other than insistence you give no reason why anyone should agree with this premise. Computer scientists aren't discovering laws of nature, nor are they writing proscriptive regulations as to how engineering should be accomplished or discussed. They have their own world and vocabulary to go along with it, but they do not have standing (as you do not) to dictate how terms should be used by others.

I don't accept that argument. If someone wants to make a narrower statement like "according to Pierce you could call Python untyped" I might question its relevance but I'd let it pass. Without such qualification, if someone says Python is untyped I will laugh at them and say "what's it doing when it throws a TypeError then, offering an opinion?". Or on a message board just reply that, no, it's dynamically typed, or unityped if you must, but untyped means something else. Which, indeed, it does.
samatman
·قبل سنتين·discuss
Untyped computation in the academic sense you refer to is untyped in the sense of Forth and assembler. The untyped lambda calculus doesn't even have numbers. Pragmatically, a language in which type errors occur is a typed language.

Nor does it make sense to conflate "typed and untyped" with "statically typed and dynamically typed". These are simply very different things. Julia is an example of a dynamically typed language with a quite sophisticated type system and pervasive use of type annotations, it would be insane to call it untyped. Typescript is an example of a dynamic language which is nonetheless statically typed: because type errors in Typescript prevent the program from compiling, they're part of the static analysis of the program, not part of its dynamic runtime.

The fact that it's uncommon to use untyped languages now is not a good reason to start describing certain type systems as 'untyped'! A good term for a language like annotation-free Python is unityped: it definitely has a (dynamic) type system, but the type of all variables and parameters is "any". Using this term involves typing one extra letter, and the payoff is you get to make a correct statement rather than one which is wrong. I think that's a worthwhile tradeoff.
samatman
·قبل سنتين·discuss
Influenced by DJ Kool Herc more than any of those, I would wager.

I was AFK all night after posting this, but I actually regret not acknowledging international contributions to techno music and culture, which was and is huge.

But I can't agree with this:

> Where it comes from is defined by where you draw a line in the sand.

There was a time before anyone called music 'techno', and a time after. That's the line, and the part of history which crossed that line happened in the Detroit Metro area. There's no disputing this.

Techno parties are all about having a good time and welcoming everyone, no matter who they are or where they're from. The music is absolutely a blend of influences from all over, and Germans took to it (hard!) for a reason. But roots is roots.
samatman
·قبل سنتين·discuss
You have gotten the history here dead wrong:

> The techno scene originated in Germany, reached the UK, and it was later associated with the Chicago & Detroit EDM scene in America.

Techno was invented in Detroit, house music in Chicago. Germany like techno. In no sense whatsoever did they invent or originate it.