Hacker Newsnew | past | comments | ask | show | jobs | submit | arjvik's commentslogin

Every object in git (commit, tree, revision of a single file) has a hash that is guaranteed unique within a repository (otherwise many more things than a web UI would break) and likely also globally. I can understand wanting to isolate repositories to prevent hash collisions from causing problems, but within a repo everything has a universally unique ID.

edit: for instance, that specific VERBS.md is represented by the blob 3b9a46854589abb305ea33360f6f6d8634649108.


that's not what i meant. i was trying to suggest that the string "blob" does not fit. why is it there? why is it needed?

    https://github.com/gritzko/beagle/a7e17290a39250092055fcda5ae7015868dabdb4/VERBS.md
this should be sufficient to represent the file.

"blob" is like a descriptor of the value that follows. it would be like doing this:

    https://github.com/user/gritzko/project/beagle/blob/a7e17290a39250092055fcda5ae7015868dabdb4/file/VERBS.md
this actually irks me every time i see it in a github url

> this should be sufficient to represent the file.

Except it's not, because the oid can be a short hash (https://github.com/gritzko/beagle/blob/a7e172/VERBS.md) and that means you're at risk of colliding with every other top-level entry in the repository, so you're restricting the naming of those toplevel entries, for no reason.

So namespacing git object lookups is perfectly sensible, and doing so with the type you're looking for (rather than e.g. `git` to indicate traversal of the git db) probably simplifies routing, and to the extent that it is any use makes the destination clearer for people reading the link.


how does adding the word blob in the url help with that?

i don't think it makes a difference here.

in fact compare these urls:

https://github.com/gritzko/beagle/blob/a7e172/VERBS.md

https://github.com/gritzko/beagle/raw/a7e172/VERBS.md

https://github.com/gritzko/beagle/commit/a7e172/VERBS.md

turns out that "blob", "raw" and "commit" have nothing to do with the hash itself, but are functions to describe how the object in question is to be presented. so what i said above about blob being redundant is false, the problem is rather that it is in a weird place. it should be at the end, like a kind of extension because it signifies the format of the output. except i think putting it at the end makes handling relative paths more difficult as it would have to be appended to every link to other files.

the roxen webserver has an interesting solution for that. they call it prestates and it's placed at the beginning of a url: https://github.com/(commit)/gritzko/beagle/a7e172/VERBS.md . it sets the format value visually apart, and you could have multiple prestate values separated by a comma. i have used that feature extensively on my own sites. i even expanded on the concept in custom modules.


> how does adding the word blob in the url help with that? i don't think it makes a difference here.

How does adding a disambiguating segment help disambiguate?

"in fact, consider these urls":

https://github.com/gritzko/beagle/issues

https://github.com/gritzko/beagle/pulse

> are functions to describe how the object in question is to be presented

So they are functions, which take parameters, which makes prefix notation reasonably natural?

> the problem is rather that it is in a weird place. it should be at the end

That's, like, your opinion man.

> except i think putting it at the end makes handling relative paths more difficult as it would have to be appended to every link to other files.

It also doesn't make sense when file paths may not be relevant at all e.g. compare

https://github.com/gritzko/beagle/commit/a7e172

and

https://github.com/gritzko/beagle/commit/a7e172/VERBS.md

As well as where https://github.com/gritzko/beagle/blob/a7e172/ ends up

> the roxen webserver has an interesting solution for that. they call it prestates and it's placed at the beginning of a url: https://github.com/(commit)/gritzko/beagle/a7e172/VERBS.md .

> When developing and debugging is a great help to be able to turn on and off specific parts of the code that generates the current page.

That doesn't have anything to do with what github does.


They are following the /key/value/key/value pattern, but the first two pairs in a GitHub URL are fixed to user and project, which lets them omit the key names. I could see them not being willing to hardcode the third pair to blob.

Back when GitHub URLs were kind of cool, github.com/user/gritzko/project/beagle would have been much less cool than just github.com/gritzko/beagle.


> They are following the /key/value/key/value pattern

They are not. There's just a routing layer below the repository.


elaborate on the problem, for those of us that this is not obvious to?


Chinese company has an issue being a Chinese company for international legal or optics reasons, relocates to Singapore while still being controlled by Chinese nationals or all-but-Chinese-Nationals. Bytedance is a great example. Russian companies do the same thing with Switzerland, see Kaspersky.


They could just as well relocate to California for that matter.

The question is are they still controlled by the PRC. China doesn't allow dual citizenship (like other Asian countries), so people might legitimately want to work abroad while keeping their native passport.


Yes but also no, being in the US is a meaningful exposure in a way that a Singapore HQ isn't


While it would be a hilarious failure mode to encounter, this is actually a good thing!

These models already have the skills that humans were using them for, so either by training the models to use subagents or simply inlining the work done by the AI, you have a much easier time training the model to perform tasks from a human-distribution. The humans have done the work of making the human-distribution look more like an AI distribution.


Doesn't this assume that what humans are current doing with LLM agents is working out? Isn't it a bit early to bet on that to this degree?


Not when all of the marketing of LLMs is touting their abilities to do the exact thing and that is what investors are being presented.

If it is as you say, then eventually the house of cards will crumble. Then we can finally go back to work and quit being inundated with needing to use AI for everything.


Turns out if we say any word with the same inflection as sit, our dog sits!


I think it's partly because "sit" is one of the first commands they learn so if they're not sure what to do, they'll default to sit as that often gets the treat.

That's also why you teach "sit" first before, "bite the face of the person in front of me" (talking German Shepherds again)


Open access typically means authors pay a publication fee, which leads to the same result of the government paying twice and the journal profiting twice.


Almost as if they shouldn't be getting special treatment in the first place!


  insertDrakeMeme()
  nah: Actor-Critic Models
  ayy: Actor Model
In seriousness, huge fan! multi-agent systems are inherently distributed systems, and we've solved the problem of organizing distributed systems before through actors.

...Just wait until we get multi-agent systems with enough agents to need distributed consensus!


This I didn’t know!


recover()'s semantics make it so that "pointless" use like this can be inlined in a way that changes its semantics, but "correct" use remains unchanged.

Yes, maybe some code uses recover() to check if its being called as a panic handler, and perhaps `go fix` should add a check for this ("error: function to be inlined calls recover()"), but this isn't a particularly common footgun.


> ... and perhaps `go fix` should add a check for this (

This is an impossible task. For a library function, you can't know whether or not the function is defer called.

Maybe this is not an important problem. But it would be better if the blog article mentions this.


by future do you mean Future<T> or metaphorical future? :)


I see what you did there.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: