Loading comment...
Loading parent story...
Loading comment...
1. Stacked PRs. I like to be kind to my reviewers by asking them to review small, logically-contained pull requests. This means I often stack up chains of PRs, where C depends on B depends on A, and A is being reviewed. If I receive feedback on A, jj enables me to incorporate that change within A, and flows those changes down into my dependent branches. I can then merge and close out A, whole continuing to work on B and C. Achieving this in raw git is labour intensive and error prone.
2. Easily fix up commits. I like to work with atomic commits, and sometimes I realize that I've made a typo in a comment, or a small error, or missed a test case. Jj makes it really trivial to timewalk back to the commit in question, fix it and resume where I left off.
3. Decompose a big PR into multiple PRs. This is the flip side of point 1: I can take my own big PR and rearrange and partition the commits into A, B and C so that they can easily be reviewed.
In general, jj seems to encourage and reward you for being disciplined with your commits by enabling you to be more flexible in how you stage, review and ship your code.
On the flip side, if you're the kind of person who is used to typing `git commit --all --message "xxx"` you might not get as much value from jj until that changes.
Meanwhile, there are git tools that solve the above three problems. My organisation uses `git-spice` (https://abhinav.github.io/git-spice/) which tightly integrates with Github to give you stacked PRs, editing of branches and management of your stacks in Github.
I've been trying jj for a while now because Steve Klabnik heavily recommended it, and so far it hasn't clicked in as nicely as my existing git setup.
I really love django and everything around it, but I would also like to write a webapp in Java.
Getting django + rest_framework up and running and actually be productive takes me max 10 minutes, trying to do the same with spring boot I am a week in and I had to open the jakarta specs to understand the magic.
Loading parent story...
Loading comment...
But it IS Apple's choice. The problem is they have a mixed up conflict of interest, and it's even worse when Apple themselves is trying to sell you their own services.
IMHO the company making the hardware, the company making the software, and the company selling the cloud services shouldn't be allowed to all be the same company. There's too much conflict of interest.
Google sells PiP, background playing etc. as part of YouTube Premium (not Apple!). Google serves browser clients a player that can't do those things, because they want you to pay for them. Vinegar is a browser extension that replaces Google's player with Apple's plain HTML5 player. Apple's plain HTML5 player does all that stuff for free.
This makes me extra sad. The HW is very good and very expensive, but the SW is mediocre. I bought an iPhone 16 a few months ago and I swear that is the first and last iPhone I'd purchase. I'd happy sell it at half of the price if someone local wants it.
Edit: Since people asked for points, here is a list of things that I believe iOS does not do well:
- In Android Chrome, I can set YouTube website to desktop mode, and loop the video. I can also turn off the screen without breaking the play. I can't do this in Safari however I tried.
- In Safari, I need to long-press a button to bring up the list of closed tabs. How can anyone figure it out without asking around online?
- In Stock app, a few News pieces are automatically brought up and occupy the lower half of the screen when it starts up. This is very annoying as I don't need it and cannot turn it off.
- (This is really the level of ridiculous) In Clock, I fucking cannot set an one time alarm for a future date (Repeat = Never means just today), so I had to stupidly set up weekly alerts and change it whenever I need a new one-time. I hope I'm too stupid to find the magic option.
- Again, in Clock, if I want to setup alarm for sleep, I have to turn on...sleep. This is OK-ish as I can just setup a weekly alarm and click every weekday.
So far, I think Mail and Maps are user friendly. Maps actually show more stuffs than Google Map, which is especially useful for pedestrians. Weather is also good and I have little complain about it.
I dislike the new Safari layout in iOS 26 too. https://support.apple.com/en-nz/guide/iphone/ipha9ffea1a3/io... -- change it from "compact" to "bottom". I assume this choice will disappear in the future, but for now, you can make it more familiar.
Unfortunately, I don't have any advice for the Clock/Alarm; I don't typically schedule one-off future alarms. That would be a useful feature.
"django-stubs>=5.2",
"django-stubs-ext>=5.2.2",
In `settings.py`, add: import django_stubs_ext
django_stubs_ext.monkeypatch()
With that, it seems _mostly_ OK, though I had to toggle off some of basedpyright's typechecking.
But we're seeing that this becomes OK in the workplace, and I don't believe it is.
If you propose these changes that would've normally taken you 2 weeks as your own in a PR, then I, as the reviewer, don't know where your knowledge ends and the AI's hallucinations begin.
Do you need to do all of these things? Or is it because the most commonly forked template of this piece of code has this in its boilerplate? I don't know. Do you?
How can you make sure the code works in all situations if you aren't even familiar with the language, let alone the framework / API and protocol?
This has always been a problem in software engineering; of course -- sometimes staff have left, so you have to dig through tickets, related commits and documentation to intuit intent. But I think it's going to make for very weird drags on productivity in _new_ code that may not counter the acceleration LLMs provide, but will certainly exist.