• 14 Posts
  • 133 Comments
Joined 1 year ago
cake
Cake day: June 19th, 2023

help-circle
  • I wonder if the slowdown in non-ai features this release was influenced in some way by their migration away from AMD modules to ES modules.

    Putting myself in their shoes and taking codemods into account, I wouldn’t want to make a big feature and have to worry about AMD/ES module concerns. Why do that when instead I could get a bunch of checking and smaller (but non headline) tasks out of the way and get back onto the larger features in 1-2 months after the ES modules are proven to work and I don’t have to worry about rolling back changes.

    Either that, or sometimes by statistical eventuality we end up with changes (which all take a different time to be completed) just not being released within a small period of time.




  • 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



  • 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.








  • I’m under the impression that there’s two reasons we don’t have it in chromium yet:

    1. Google initially ignored jpeg-xl but then everyone jumped on it and now they feel they have to create a post-hoc justification for not supporting it earlier which is tricky and now they have a sunk cost situation to keep ignoring it
    2. Google today was burnt by the webp vulnerability which happened because there was only one decoder library and now they’re waiting for more jpeg-xl libraries which have optimizations (which rules out reference implementations), good support (which rules out libraries by single authors), have proven battle-hardening (which will only happen over time) and are written safely to avoid another webp style vulnerability.

    Google already wrote the wuffs language which is specifically designed to handle formats in a fast and safe way but it looks like it only has one dedicated maintainer which means it’s still stuck on a bus factor of 1.

    Honestly, Google or Microsoft should just make a team to work on a jpg-xl library in wuffs while adobe should make a team to work on a jpg-xl library in rust/zig.

    That way everyone will be happy, we will have two solid implementations, and they’ll both be made focussing on their own features/extensions first so we’ll all have a choice among libraries for different needs (e.g. browser lib focusing on fast decode, creative suite lib for optimised encode).







  • stdlib.io is a data process/vis library, not a standard library.

    jQuery was a DOM/Utility DX library (and also a compatibility layer before all browsers finally focussed on standards), not a standard library.

    Deno people are trying so fucking hard to be relevant. It’s embarrassing. Bringing nothing to the table has been their MO from day 1.

    Let’s examine that.

    Deno has always been:

    (parapharing) “Hi, I’m the creator of Node and want to make it better but can’t get everyone on board with the changes. So I’m going to create a new JS runtime. Node will need to implement these improvements to keep up or everyone will switch away from node. Either way, developers win.”

    We know it’s been that way since he was a month into Deno’s development in his famous talk: 10 Things I Regret About Node.js

    Deno […] Bringing nothing to the table […]

    Have a look through each of those 10 points he brought up, then compare that to node before, and node now. It’s pretty clear he gave them the swift kick in the ass to start making those changes. We win. That’s clearly a success.