HNHacker News
TopNewBestAskShowJobs

yazaddaruvala

3,279 karma · joined May 31, 2013

submissionscomments
yazaddaruvala··on Mold – A really fast linker
It seems odd to me that we still require .o files at all.

Given the final program needs to be storable in RAM + Virtual Memory it surprises me that we still need the intermediate step of pushing to the file system only to then immediately reopen and merge those files.

Does someone have more info on this? Or is the reason just legacy? Or is the reason just some ideological “single responsibility” thing?

yazaddaruvala··on We’ve filed a law­suit chal­leng­ing Sta­ble Dif­fu­sion
I think that is a very fair argument. It may win in court it may lose. I’m excited for the precedent either way.

That’s said, it does raise the question, “should this precedent be extended to humans?”

i.e. Can humans be taught something based on copyrighted materials in the training set/curriculum?

yazaddaruvala··on We’ve filed a law­suit chal­leng­ing Sta­ble Dif­fu­sion
But in fairness, even a human could know how to violate copyright but cannot be sued until they do violate it.

SD might know how to violate copyright but is that enough to sue it? Or can you only sue violations it helps create?

yazaddaruvala··on We’ve filed a law­suit chal­leng­ing Sta­ble Dif­fu­sion
> Oh, one image is enough to apply copyright as if it were a patent, to ban a process that makes original works most of the time?

The law can do whatever its writers want. The law is mutable, so the answer to your question is “maybe”.

Maybe SD will get outlawed for copyright reasons on a single image. The law and the courts have done sillier things.

yazaddaruvala··on We’ve filed a law­suit chal­leng­ing Sta­ble Dif­fu­sion
Correction: if you draw a copy of Biden and it happens to overlap enough with someone’s copyright of a drawing or image of Biden, you did create a derivative (whether you knew it or not).
yazaddaruvala··on We’ve filed a law­suit chal­leng­ing Sta­ble Dif­fu­sion
I agree with you. My intuition is also that SD itself is not a violation of copyright.

That said it can sometimes be in violation of copyright if it creates a specific image that is “too close to another original” (just like a human would be in violation even if they never previously saw that image).

But the above is just my intuition (and possibly yours) that doesn’t mean a lawyer couldn’t make the argument that it’s a ”good enough lossy compression - just like jpeg but smaller” and therefore “contains the images in just 2 bytes”.

That lawyer may fail to win the argument, but there is a chance that they do win the argument! Especially as researchers keep making Diffusion and SD models better and better at being compression algos (which is a topic people are actively working on).

yazaddaruvala··on We’ve filed a law­suit chal­leng­ing Sta­ble Dif­fu­sion
Words have a special carve out in copyright law / precedent. So much so that a whole other category of Intellectual Property exists called Trademarks to protect special words.

But back to your point “if you were to take the first sentence from a thousand books and use it in your own book”, then yes based on my understanding (I am not a lawyer) of copyright you would be in violation of IP laws.

yazaddaruvala··on We’ve filed a law­suit chal­leng­ing Sta­ble Dif­fu­sion
> It's equivalent to trying to sue a compression codec because a specific archive contains a copyrighted image.

This is the most salient point in this whole HN thread!

You can’t sue Stable Diffusion or the creators of it! That just seems silly.

But (I don’t know I’m not a lawyer) there might be an argument to sue an instance of Stable Diffusion and the creators of it.

I haven’t picked a side of this debate yet, but it has already become a fun debate to watch.

yazaddaruvala··on We’ve filed a law­suit chal­leng­ing Sta­ble Dif­fu­sion
That’s my point, Diffusion[1] does seem to be “just like” gzip or base64.

And it would be illegal for me to sell or distribute zipped copies of images without the copyright holder’s consent. Similarly there might be an argument for why Diffusion[1] specifically can’t be built with copyrighted images.

[1] which is just one part of something like Stable Diffusion

yazaddaruvala··on We’ve filed a law­suit chal­leng­ing Sta­ble Dif­fu­sion
Seriously!!!

I didn’t say it cuz I didn’t think it would resonate, but it’s a whole new world we are quickly entering.

yazaddaruvala··on We’ve filed a law­suit chal­leng­ing Sta­ble Dif­fu­sion
lol thinking about this more:

I understand people’s livelihoods are potentially at stake, but what a shame it would be if we find AGI, even consciousness but have to shut it down because of a copyright dispute.

yazaddaruvala··on We’ve filed a law­suit chal­leng­ing Sta­ble Dif­fu­sion
> That’s going to be hard to argue. Where are the copies?

In fairness, Diffusion is arguably a very complex entropy coding similar to Arithmetic/Huffman coding.

Given that copyright is protectable even on compressed/encrypted files, it seems fair that the “container of compressed bytes” (in this case the Diffusion model) does “contain” the original images no differently than a compressed folder of images contains the original images.

A lawyer/researcher would likely win this case if they re-create 90%ish of a single input image from the diffusion model with text input.

yazaddaruvala··on Apple announces full Swift rewrite of the Foundation framework (2022)
I’ve worked professionally with Java, Scala, C++, Python, Rust, JavaScript, Typescript, Ruby.

None of them are ergonomic for non-trivial applications!

The goal is to appropriately abstract away the super minority of code that deals with the non-trivial parts into a nice ergonomic interface.

Rust is frankly better than most in the list above at allowing the writer to create an ergonomic interface. Yes it’ll take the writer 3x as long in the short term to create the ergonomic interface but:

1. Relative to everything else creating/maintaining these types of internal abstractions is a super minority of time spent reading and writing code.

2. Unlike other languages, you’ll end up with fewer iterations of the interface because it’ll push the author to really understand the complete interface, rather than shipping a buggy interface that needs iteration. Also refactoring is Rust is simpler than any other of the listed languages (because it self documents more assumptions).

3. The ergonomic interface likely has already been published as a crate. I.e. don’t need to write it at all. These internal abstractions are more likely to be written in their first pass as general purpose than in other languages because of the collaborative design working with the rustc compiler.

yazaddaruvala··on Apple announces full Swift rewrite of the Foundation framework (2022)
> trying to figure out how to write generic traits using higher ranked trait bounds with understanding variance sufficiently

I agree! You’re currently dealing with writing non-ergonomic Rust.

I’d argue your domain is missing a fundamental reusable library/framework or the framework is currently missing a piece. Once someone publishes the needed library (hopefully it’ll be you) then everyone consuming it can just Lego block multiple crates together. Lego blocking crates together (barring heavy macro crates) is very ergonomic.

95% of all new code written is Lego blocking other crates. 5% of new code written is to build new or improve/patch crates.

yazaddaruvala··on Apple announces full Swift rewrite of the Foundation framework (2022)
Reading the super majority of Rust code is equally easy or easier than reading Python, or Typescript, or even Ruby.

Writing Rust applications is also very ergonomic. The Rust web server frameworks are approaching the ergonomics of Typescript web server frameworks.

The only Rudy lacking ergonomics is writing net new frameworks or missing framework pieces, or when std is not available.

95%+ of all new Rust code will fall into the bucket of “ergonomic to write and read”.

yazaddaruvala··on Rust Atomics and Locks: Low-Level Concurrency in Practice
It’s a common misconception but there is a difference between concurrency and parallelism.

Concurrency is very useful across all aspects of the stack including OS code, and even web app code.

Your comment about “usefulness” is likely about Parallelism. Which I agree with you is typically only useful in abstractions like OS code and even web frameworks.

yazaddaruvala··on A practical comparison of build and test speed between C++ and Rust
It really depends on what you’re trying to benchmark here.

If you’re benchmarking the two compilers for lines of code, you’ve done a really good job and people shouldn’t complain about the Rust code length.

> then people would complain that the Rust code was artificially shorter.

If you’re trying to benchmark Rust development vs C++ development, then people cannot complain that the Rust code is “idiomatically shorter”.

Arguably right now your benchmark has the Rust code “artificially longer”. Which is fine if that is what you’re intentionally trying to measure.

yazaddaruvala··on Coworkers are less ambitious; bosses adjust to the new order
I think, it’s the surplus of supply that has changed the nature of status symbols.

It was a status symbol to own a Mercedes, now I can easily rent the newest nicest of any car for a few Instagram shots a year.

So this is what many millennials did/do. Chose their status symbol for the current occasion then use something practical the rest of the time.

GenZ was brought up with this mental model and didn’t see any of these rentables as real status symbols.

yazaddaruvala··on TSMC starts volume production of 3nm chips
> 3nm technology would feature an estimated 60 percent gain in density of logic transistors and reduce power consumption by 30 percent to 35 percent at the same rate compared with 5nm technology

I'm really looking forward to the new Gravitons and the M3 Pro/Max/Ultra MacBooks! and what they will be able to achieve.

yazaddaruvala··on California passes law banning Tesla from calling software FSD
The biggest difference between Lyft/Uber and dispatch taxis isn’t the automation it’s the customer service!

Previously customer service was non-existent. If a taxi didn’t show up, we just got screwed. There wasn’t even anyone to call for the issue. On the apps I instantly get a credit to help ease the burden and the driver has their rating reduced.

For many reasons customer service is very expensive and it’s not yet automated. That’s one big additional variable to keep in mind.

yazaddaruvala··on California passes law banning Tesla from calling software FSD
Tolls in cities for traffic control are common where needed. It works well and is simple.
yazaddaruvala··on Programs are dead, and JavaScript has killed them
lol, are you familiar with ring 0? what about context switching and scheduler preemption? If you are, then you know they add significant overhead to IO bound applications.

> Why the hell would you put something like that in the kernel?

Because some ridiculously large % of all client software is written in/transpiled to JavaScript?

If the JS/WASM runtime would be run with the correct sandboxing (similar to browsers like Chrome), you likely could run the entire application in ring 0 and only context switch because of scheduling preemption. Maybe even ouch the whole browser into the kernel?

All runtime APIs that currently need “syscalls” would become significantly more efficient. You’d end up with an extremely performant system for running browsers and browser like apps (ie Electron).

yazaddaruvala··on Apple to allow outside app stores in overhaul spurred by EU laws
> I have never needed such protection

lol

> That’s a you problem.

Isn’t it actually a you problem?

I have a painpoint. The company I want to do business with is a company willing to solve my painpoint for me for some money. Im willing to pay them and the ecosystem to solve it for me.

You have a painpoint. The company you want to do business with doesn’t want to solve it for you, for any amount of money. You want to force the company to solve your painpoint at my expense.

Seems very much like you have problems, and you’re making your problem into a me problem?

yazaddaruvala··on Apple to allow outside app stores in overhaul spurred by EU laws
> Apple pretending "to protect me against myself",

I find this to be a feature. Please protect me against "myself" (sometimes I'm tired, sometimes drunk - and dark patterns around the web can get to me too).

yazaddaruvala··on Programs are dead, and JavaScript has killed them
I have! It's a very good talk. I wouldn't make any design or technology decisions based on it tho.

What is clear today is that Javascript is on every computer in the world (including phones). It is now even taking over for native desktop apps and native mobile apps. At this point, including a JS engine into all the kernels for apps and browsers to use just seems prudent.

yazaddaruvala··on Programs are dead, and JavaScript has killed them
We are probably at the tipping point where the JS engine should now be part of the kernel and run in ring 0.
yazaddaruvala··on C23 Implications for C Libraries
I really did read it, I just really believe that your biases are clouding your critical thought about this.

> invoking deferred block in each caller up the call chain back to the root

Yes if the caller writes N defers in the same function or across M functions then the code will run N defers.

Why is this any different than nesting N loops, in the same function or across M functions? It’ll still run N end of block control flow statements without them being “explicit”.

At the end of the day “explicit” typically is really just a replacement for saying “familiar with the previous documentation, don’t change things”.

Anyways, that’s all I can put into this conversation. Please just try to consider that you’re conflating familiarity with simplicity and leverage System 2 to really ask yourself if what you’re favoring is valuable to the group or just the NIMBY.

yazaddaruvala··on C23 Implications for C Libraries
> Because the control flow happens implicitly at the end of the block

Why is this different than any loop in C? or function without a return? Wouldn’t it be more explicit and very minimal overhead to instead always use a goto at the end of a looping block?

Even tho C allows while loops (as a mistake - all control flow should be explicitly defined at the end of the block), why aren’t you - as a best practice - using an explicit goto and if block instead of while / for?

yazaddaruvala··on C23 Implications for C Libraries
Why is "defer" not considered "explicitly declaring control flow" if the documentation describes it correctly?
yazaddaruvala··on C23 Implications for C Libraries
> Nothing should happen without the user explicitly saying so.

Umm, why is typing something like defer (and documenting what it does) different than typing something like goto (and documenting what it does)?

Frankly, not being comfortable with adding safe and efficient abstractions to a language will result in the death of the language (both for spoken languages and also for programming languages).

← PreviousPage 11 of 34Next →