Skip Navigation

Posts
0
Comments
147
Joined
3 yr. ago

  • It's basically just a better sourcetree.

    If you're already used to sourcetree, it's a really smooth transition.

    The main reason to switch away from sourcetree is the bugs and papercuts.

    • Bugs: Sure, bugs happen with everything but you're stuck with them when they happen with sourcetree. There was an issue not too long ago where sourcetree couldn't scroll. It was classed as a low priority bug and took about a year for it to be fixed. Imagine needing to use your keyboard to scroll up and down, but then git would refresh and take you back to the top where you'd need to start again. Now imagine trying to do that for a whole year. And that was just one bug.
    • Papercuts: It's so good at some things that you want to forgive the flaws in other things and find workarounds to bugs, but after a while they build up into poisoning you're experience. For example: things going slow in larger repos, getting git errors when staging certain lines because a different line in the middle had to be staged/removed in a different order, the bi-yearly account issues, etc...

    The thing is, you don't need to put up with it since fork already does everything that sourcetree does (and a bit more), and they actually spend time sanding off the papercuts so you don't need to worry about finding workarounds when something goes wrong.

    Just losing the bugs without losing any features is already reason enough to switch.

    But there's also the improvements over sourcetree as well:

    • Collapsible and sortable git graph (by date or topology)
    • Better staging -- Sourcetree supports staging changed content by file, hunk, and sometimes by line when it doesn't bug out. -- Fork supports staging changed content AND original content by file, hunk, and by line. That way if you changed a line, you can keep both the old version and new version in a commit. (e.g. You altered a comment in your code, but then upon self review when staging changes you realised you don't want to change the comment, but instead you want the new comment to exist under the old comment. Instead of copying the change, undoing the change, then pasting the change into the code, you can simply stage the addition of the line, but discard the removal of the old line. Now both lines exist in your code)
    • Better rebasing
    • Supports new git features (e.g. worktrees, new diff algos, etc)
    • Just how snappy the program is compared to sourcetree, it keeps you in that flow state
  • Looks quite good if you want to use git exclusively in vscode.

    IMO, fork is the best git client for macOS/Windows but lacks native linux support (although they are experimenting with it).

    Until fork gains linux support, this seems like a nice alternative if running on linux (and if it supports the remote development APIs: running on a linux docker image)

  • This doesn't seem overly useful.

    It's a list taken out of a bunch of books with no regard for how something can be the best path in one language and a smell in another language.

    Look at this page for example: https://luzkan.github.io/smells/imperative-loops

    It suggests using functional loop methods (.map(), .reduce(), .filter()) instead of using imperative loops (for, for in, for each) but completely disregards the facts that imperative loops also have access to the break, continue, and return keywords to improve performance.

    For example: If I have an unsorted list of 1000 cars which includes a whole bunch of information per car (e.g. color, year manufactured, etc...), and I want to know if there were any cars were manufactured before the year 1980, I can run an imperative loop through the list and early return true if I find one, and only returning false if I haven't found one by the end of the list.

    If the third car was made in 1977, then I have only iterated through 3 cars to find my answer.

    But if I were to try this with only functional loops, I would have to iterate through all 1000 cars before I had my answer.

    A website with blind rules like this is going to lead to worse code.

  • QOI is just a format that's easy for a programmer to get their head around.

    It's not designed for everyday use and hardware optimization like jpeg-xl is.

    You're most likely to see QOI in homebrewed game engines.

  • I like to say:

    We have a half finished skyscraper, and you're asking me to Just add a new basement between the second and third floor. Do you see how that might be difficult? If we want to do it, we have to tear down the entire building floor by floor, then build up again from the second floor. Are you prepared to spend the money and push back the release date for that new feature?