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

> 37e9 bytes/token

This doesn't quite sound right...isn't a token just a few characters?


I worked at Google for ten years (as an IC). Here's my personal perspective.

Yes, of course, the individual employees know. But the decision making for these kinds of things is usually a full-time middle manager, who isn't deciding on behalf of Google as a whole, but on behalf of their organization within Google (could be 50 people, could be 2000). It's not just _not_ that manager's job to make the globally optimal decision for Google, it's actually likely often in direct conflict with their job, which is basically "set the priorities of your org such that they launch things that make your boss look good to his boss". Spending headcount on maintaining niche stuff is usually not that (and takes resources away from whatever is).


And this is exactly why they need to be broken up. If that offering was their core service, you can bet it would be the priority of the middle managers.


I'm personally unconvinced that smaller companies put out better products, and that breaking up google would raise the bar either at the new entities, or at the competition.

The integration between Google products is definitely one of the things that keeps me with them.

I've seen more than a few companies that are no better at their core service than the giants.


On average, they sure put out better customer service than the likes of Google and Meta.


I'm not sure "better customer service for an equally bad product" is what really moves the needle for me.


How smaller company will have other incentive for middle managers?

Small companies I've been working in are sometimes even worse.

Web app which takes 10+ sec to fully load? That's ok, focus on the new features!


> Web app which takes 10+ sec to fully load? That's ok, focus on the new features!

This web app wouldn't survive unless it already had backing of the Microsoft level or did offer immense unique value to its users.


It's rather lack of choice. You are going to use app of your utilities provider no matter how crappy it is.


I wish Google weren't like this, but I don't agree it should be illegal.


He actually got the job he didn't think he could get.


Yea, with an AI resume.

Are you missing the point, or do you genuinely consider LLM output a proof of merit?


I don't think I'm missing the point. Getting the job is real-world validation that cannot be explained by LLM sycophancy-inspired delusions.


jj lets you do this with changes that are related.


I can do it with changes that are related. But I understand that jj makes it trivial, which is not a life-changer but it's nice. Does that sound about right?


The hard part I always found without jj (and Fig before it, when I was at Google) was managing a DAG of small changes.

What's your git workflow for a change that depends on two other in flight changes? (More generally, of course, this can occur in an arbitrary part of one's change graph - which is usually not too deep, but at least in my experience, occasionally is.)

Having good tooling for this unlocked workflows I didn't know I was missing, and switching back to git when leaving Google felt like losing a limb.



The term poaching is common, but is a word that overemphasized the importance of the hirer.

There are 3 parties involved. The worker choosing to accept a better offer. The hiring company making a better offer. The previous employer offering unsatisfactory terms.

The term "poaching" suggests that the departing employee is being "stolen" or "taken" from their current employer, implying a sense of ownership over that individual. Employees are not property; they are individuals with the right to seek better opportunities and make their own career choices.


Another standard term is Recruited.


In terms of incentives, Hungary has attempted this with tax policy: https://en.m.wikipedia.org/wiki/Family_policy_in_Hungary

Seems to be working!


"Working" is a pretty generous description of a policy that, at a cost of 3-4% of GDP, has raised the fertility rate from its low of 1.23 in 2011 to about 1.55 today. That 1.5ish TFR is pretty stable, too: there's been almost no improvement since 2016.

No country has figured this out, and if getting to (just!) replacement rate requires healthcare-like expenditures as a % of GDP, it is genuinely unclear to me how we do that on a global scale.


Not it is not stable, it was 1.38 last year (source, from the central statistics authority: https://www.ksh.hu/stadat_files/nep/hu/nep0006.html). This year will be even worse, see top left chart: https://www.ksh.hu/heti-monitor/nepmozgalom.html (live births per month)

(edit: added translation of unit)


It's pretty clear theyre going to drop below their 2011 baseline soon. In other words, 5% of GDP into pronatal policies and transfers will have at best delayed the inevitable drop by a couple years.


Neighbour countries are at 1.0x TFR, so that policy is quite effective.


IIRC that was a deliberate campaign to make the site unattractive to a spate of non-technical folks who had apparently all simultaneously discovered it.


https://news.ycombinator.com/item?id=512145

"We've had a huge spike in traffic lately, from roughly 24k daily uniques to 33k. This is a result of being mentioned on more mainstream sites [...] You can help the spike subside by making HN look extra boring. For the next couple days it would be better to have posts about the innards of Erlang [...]"

"Ok, ok, enough Erlang submissions. You guys are like the crowdsourced version of one of those troublesome overliteral genies. I meant more that it would be better not to submit and upvote the fluffier type of link. Without those we'll be fine."

Also some fun comments here: https://news.ycombinator.com/item?id=512178


This is a great little anthropology work of you. Thanks for taking time to find this out!


Here's what the frontpage looked like on the day of Erlang:

https://news.ycombinator.com/front?day=2009-03-11


lol ask a community of autists for more posts about the innards of Erlang, don't be surprised when you get posts about the innards of Erlang.


I hope what this policy amounts to is declining visas to students who support proscribed terrorist organizations like Hamas and Hizballah, broadcast blood libels, harass Jewish students on campus, etc. I had a foreign (Pakistani) student tell me, to my face, "I don't like you because you're a Jew." -- in front of a group of mutual friends, who awkwardly laughed it off as if he must have been joking. It's _not_ about mere criticism of Israeli policy or war doctrine, and pretending it is seems to be a new popular misperception on both the far left and the far right.

This was a very real thing when I was an undergrad, and it's surely much worse today. I have family with long histories of attending Ivy League schools, and their seniors are no longer applying to those schools, entirely over antisemitism.

If American universities were 1/3 populated by, say, Russian students with a high propensity for harassing gay students, implying that all gay people are predators, etc., I think the left-leaning commenters here would take a very different perspective.


A massive problem in the current climate is that the middle-ground has been eroded. There are only two states: pro- or anti-Israel.

For example, if you show solidarity for killed children in Gaza, that also means that you're by proxy pro-Hamas, because Palestine = Hamas. Thus you can not be pro-Israel, and must be anti-Israel.

Likewise we've come to the point where you can say: "I feel for the Israeli people after the October 7 attacks, but I don't like the Israeli government". You automatically get classified as something other than pro-Israel, and, thus anti-Israel.

The middle ground has eroded. And with the Trump administration being what it is, I have zero faith that they'll see it any other way.


> There are only two states: pro- or anti-Israel

Not really. I take the third option: I don't know enough about the situation to reach almost any policy recommendation with high confidence. Not engaging is always an option, particularly when you're dealing solely with rhetoric and not any fundamental action. (Obviously, if you're greenlighting weapons purchases your duty of care is higher.)


You don't need to recommend any policy. Simply saying "I don't support genocide" will illicit a negative response from the pro Israel side of things and puts you in the "against" category.


> Simply saying "I don't support genocide" will illicit a negative response from the pro Israel side of things and puts you in the "against" category

Sure. But declining to use the term "genocide" similarly illicits a negative response from a lot of the pro Palestinian side.

Single-issue advocates will tend to dislike you if you don't take their position on an issue. That doesn't mean anyone has to. (My pet war was Ukraine. I, similarly, took a dim view of anyone who described Russia's invasion as a defensive war. And I'd similarly argue with folks who thought what happens in Ukraine has nothing to do with America's security, though I hope I was more respectful than the status quo with Gaza.)


> Single-issue advocates will tend to dislike you if you don't take their position on an issue. That doesn't mean anyone has to

These are the people who will determine whether or not you get a visa over a statement both you and I see as benign. Anything other than explicit endorsement is seen as adversarial.


> These are the people who will determine whether or not you get a visa over a statement both you and I see as benign

We don't know that yet, the guidance hasn't been issued. (And we haven't seen how it's being interpreted by consular staff.)


Assuming anything but the obvious is carrying water for fascists and which is how we've gotten into this situation. Is there any reason to assume that aren't going to do the exactly that?


> Is there any reason to assume that aren't going to do the exactly that?

Yes. They're publish something and then a picosecond later a district court will issue a nationwide injunction.


Trump's admin is ignoring court orders and are about to pass a bill that will make it illegal to hold them in contempt of court. I don't see why an injunction will matter.


> what this policy amounts to is declining visas to students who support proscribed terrorist organizations like Hamas and Hizballah, broadcast blood libels, harass Jewish students, on campus, etc.

I dressed up as Ghadaffi in college for a party. Not because I knew almost anything about the man. But because it was edgy and adolescent brains are dumb, particularly when male. Plenty of students who will go on to be good and productive members of society hold stupid views now, possibly most given the state of scial media.

This move, in particular, comes across as in particularly bad faith inasmuch as it's being done by the man who pardoned the January 6th nutters. Actual violent criminals subscribing to terrorist tactics.


Weird you mention a brown person, and not the various white nationalist ZOG types who actually go and shoot up synagogues. Also how did you even know he was Pakistani or a student?


I'm talking about my actual experience, and I know he was Pakistani because we had mutual friends. He dated one of them. I know exactly who he was. What a bizarre comment.

I didn't have any similar experience with any white international students.


That was what, 10+ years ago? There have been multiple terrorist attacks on synagogues by white men since then, and somehow this is still what you posted about antisemitism.

Do you think we should strip citizenship from and remove white men who are antisemites?


[flagged]


> Shouldn't we increase visas to those that support Hamas and Hezbollah?

No. It is perfectly acceptable for a society to have norms and conventions it wants those seeking to enter it to uphold. One of those is not accepting violence as a political tactic.


So we should be banning Israelis from entering. They openly use violence as a political tactic.


> we should be banning Israelis from entering. They openly use violence as a political tactic

No, that is—ironically—collective punishment.


It's not ironic whatsoever. Dahiya Doctrine ring any bells?


You're confusing law and politics.


If that were true, then that society would not maintain an army or a police force, to enforce its political goals.

Violence is fundamental to political tactics.


> Violence is fundamental to political tactics

You're confusing law and politics. They're intrinsically related. And there is not a natural separation. But if there is a single corollary to the rule of law, it is in the integrity of that separation.


> Why would you want to reduce visas for those that support proscribed "terrorist organizations"?

Because they want to murder me and my family.


Did you try not being the bad guy?

You DON'T have to kill children to steal their land, you know? You can totally not do that.


Looks like a nice project! Will try it out next week. In the meantime, I'll share my thoughts on jj in general, since I assume most readers here won't have tried jj.

I started using jj a few months ago. I had used Fig previously when I was at Google, but then spent over 2.5 years just using git, and using jj was like riding a bike. It's more or less exactly what I want it to be and I use it as much as I can.

That said, here are some of my pain points (despite all of which I do still prefer jj to git):

* No GitHub PR sync for stacks. Managing stacked diffs locally is great, but (a better version of) Sapling's PR syncing would be a huge value add. This is somewhat of a pain point for me directly, but even more so a weakness when I've tried to evangelize jj internally as a viable "stacked diff" solution (e.g. to be blessed by our eng tools team). Someone familiar and comfortable with Sapling (or just skeptical of jj) can easily point to this feature gap in a way that pretty much ends the conversation.

* I wish the native backend supported pushing/pulling changes. I want to be able to switch between working from my laptop and my workstation, and doing that through pushing to and pulling from GitHub is obviously lossy of jj history. Manually copying the .jj directory seems to work if I'm careful and do everything correctly (i.e. make sure both clones have equivalent working copy state when I copy .jj), but this feels brittle and it's easy to mess up.

* If you forget to start a new rev before you (or your LLM) touch the repo, it's a little bit of a pain to go back and split the changes into a new rev.

* Some of the more mature repos I've worked with have tooling/scripts/tests/etc. that seem to look for or rely on the presence of .git (perhaps indirectly). Perhaps I could have gotten around this with colocated repos (i.e. `git clone` and then `jj git init --colocate`), but in at least one case I just gave up on using jj for a given repo and just made a separate git clone. I'm not sure this is really jj's fault so much as a practical compatibility gap with git (again, possibly entirely solved by using `--colocate`).


You might be interested in tangled.sh, a Git forge that recently added support for stacked PRs with jj[1] (or anything that supports the Change-Id header i suppose)!

[1]: https://bsky.app/profile/tangled.sh/post/3lptwcb47kc2u


Nice - I have no choice but to use GitHub at work, but I'm always glad to see competitors.


thanks for the mention! I was just composing a reply haha.


> No GitHub PR sync for stacks

FWIW, I think the fact that you need client support for this is a bizarre shortcoming of GitHub.

If GitHub just let you review individual commits like Gerrit does, the concept of "PR stacking" would be unnecessary (as it is with Gerrit).

The model of "a PR is just a blob of changes" is a weird baby's toy version of a code review tool IMO!


I highly recommend revup, it allows managing and uploading stacked (or arbitrary trees of) PRs to Github, including adding a comment that shows approximate revision-to-revision diffs if you want it to. I don't actually think that per-commit reviewing obviates the desire for stacked PRs, for example I often have some PRs in my stack that are not yet ready for review or merging.

https://github.com/Skydio/revup


GitHub does let you review individual commits, at least you can leave comments on them.

All we need is GitHub to support a `Depends on: #123` annotation which would hide commits already in #123 and not let you merge until #123 is merged.


> All we need is GitHub to support a `Depends on: #123` annotation which would hide commits already in #123 and not let you merge until #123 is merged.

You can get an approximation by having the PR target the branch used by #123.


This doesn't work across forks, though, and therefore doesn't compose with GitHub's model where you push your changes to your private fork and then open a PR from there.

There's also no native UI support for it in GitHub -- I'd expect to have a navigation element for stacked PRs like in Gerrit.


This means multiple stacked branches that you need to maintain on your own, doesn't it? That's the annoying part IMO, even when a short script would do or the rebases take a few characters in some efficient git UI.


You can review them but you can't look at the diff between them after they've been amended in response, so it's not actually a usable workflow.

IIUC the typical model is that people just upload new commits like "respond to review comments" and then eventually squash the whole PR into one commit when it's ready.

So basically you are just giving up on the idea that the commit history is part of the artifact you're working on.


You can review a PR commit by commit. But it's not obvious how in the UI. Navigate to the commits tab on the PR page and you can navigate through the commits in the PR and review them one by one. Although it's possible this isn't what you mean.


Github doesn’t understand that all commits can change for review purposes. This is what makes it a ‘toy’ (though I prefer stronger wording here.)


Right, the problem is when I amended one of my patches there's no way for the reviewer to look at a diff between current and previous versions.


ADO handles this by showing a dropdown of 'comment left on update X, currently update Y' with a toggle to show the difference.

I ~hate how ADO handles individual commits (comment left on a single commit is hidden), but I do like the update tracking on a PR as it allows cleaning up the commit tree seamlessly without losing history or comment traceability (less you remove/move files).


Indeed. I wrote a tool for myself to help with that in my reviews: https://github.com/nhaehnle/vctools/tree/main/diff-modulo-ba...

It admittedly doesn't have a lot of polish, but I do use it regularly and I'd be happy to help anybody who is interested in using it.


Yes, I agree, much of the blame lies with GitHub -- but realistically, GitHub isn't going to change to accommodate tools like jj.


Yeah but I just wanted to highlight that a better world exists! People should know that GitHub's toy model isn't the only one available.

Still, you're right that it makes sense to build tools to work around GitHub since there's always gonna be cases where you can't avoid using it.


Yeah, effectively all my programming is at my job, where we use GH Enterprise, so I don't really have a choice. I prefer Gerrit but not up to me.


> I wish the native backend supported pushing/pulling changes.

0.29.0 is working towards support here. It's only the first step as far as I understand (not following too closely): https://github.com/jj-vcs/jj/releases/tag/v0.29.0 git.write-change-id-header

> If you forget to start a new rev before you (or your LLM) touch the repo, it's a little bit of a pain to go back and split the changes into a new rev.

This is my biggest pain point at the moment, yes. I think it could be partially solved by better documentation already. I contributed a bit in the past but haven't had the time to look at this bit yet.


Thanks for the pointers to the progress in 0.29.0, and for your contributions. :)


> using jj was like riding a bike

This has been my experience as well! I haven't had success conveying that to my peers at work (or outside), but your comment resonates with me deeply.

> If you forget to start a new rev before you (or your LLM) touch the repo, it's a little bit of a pain to go back and split the changes into a new rev.

This is one area where I broke my Fig habits and just switched to a the [Squash workflow](https://steveklabnik.github.io/jujutsu-tutorial/real-world-w...): I basically forbid myself from use `jj edit` and have been pretty successful in getting that to stick in my brain. Instead, I use `jj new` to switch contexts (and then `jj commit`, `jj squash`, or `jj absorb` depending on what I'm trying to achieve).

> Some of the more mature repos I've worked with have tooling/scripts/tests/etc. that seem to look for or rely on the presence of .git (perhaps indirectly).

Yeah, I've noticed this too. I find that the most common root cause is usually something that wants to run a lint tool only against the files that you've changed so it does something to the effect of `git diff --name-only $(git merge-base HEAD origin/main)`. I've also noticed that some precommit hooks have been working better since I enabled the `git.subprocess` option (which is on by default as of recently, I believe).


I have more or less been using the squash workflow, but nevertheless, remembering to do `jj new` before doing anything else is a challenge. Might just get used to it with more time.


Hmm, maybe I'm missing something, but you can use the squash workflow so that you don't have to remember to start a new commit: you're always at an empty commit when you context switch to repo.

* If you `git clone ...` and then `jj git init --colocate`, you're in a new commit (whose parent is the HEAD of the git repo).

* If you write some code and then `jj commit`, you're now in a new commit.

* If you want to work on top of commit zyx instead, you can run `jj new zyx` (not `jj edit zyx && jj new`).

* If you're done for the day, you can `jj commit -m "temp: it kinda works, I'll take another stab tomorrow"` and you're on a new commit again.

In many ways, this reflects the normal git workflow (if you want something checkpointed, you've "commit"ed it). This does mean that while I'm in the middle of working on something, I have some commits that aren't split by logic but by chronology. So instead of one commit ("make foo"), I'll have three commits ("try to make foo", "eh, didn't work, try again", "fix bar so that foo actually works now") that reflect my process rather than logic. Once I'm convinced that I finally did it right, jj makes it easy to squash/manipulate the commits into the logical units I want to present in my PR (or record in my history for personal projects).


`--colocate` is indeed working fine for me. The backend is then stored in a real `.git` directory instead of being hidden deep inside the `.jj` directory as a bare git repository. Python scripts that use pygit or tools like Conan can safely use that `.git` directory while you enjoy your jj workflow.

There might be some issues with jj workspaces though if you have the habit of using git worktrees as the colocated repo is not there anymore.


> No GitHub PR sync for stacks. Managing stacked diffs locally is great, but (a better version of) Sapling's PR syncing would be a huge value add. This is somewhat of a pain point for me directly, but even more so a weakness when I've tried to evangelize jj internally as a viable "stacked diff" solution (e.g. to be blessed by our eng tools team). Someone familiar and comfortable with Sapling (or just skeptical of jj) can easily point to this feature gap in a way that pretty much ends the conversation.

Can you explain this point in detail? I've been using jj and doing stacked PRs on GitLab using `jj git push --all`. I haven't used Sapling so I'm not familiar with it's way of doing stacked PR and I'm really just curious what do you miss from it.


Sapling has a way to manage multiple PRs, setting the target branch of each to its parent and adding information about the stack of PRs to each PR description.


What does this look like in practice?

It seems jj supports this workflow roughly as well as Sapling. If I have five PRs open with five feature bookmarks, changing an ancestor and pushing will update all PRs simultaneously. Github's PR view notices that the heads were updated and changes which commits are included in the review set.

Sapling shares the limitations of Github's review UI: reviews still include all changes (I think). The only nice bit is Sapling automatically submitting the PRs for you and adding the descriptive info?

As a nifty workaround, it looks like sapling recommends an external tool called reviewstack.dev to properly review its stacked PRs which show incorrectly by default on GitHub. So is there much difference?


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

Search: