1,434 karma · joined April 2, 2012
[ my public key: https://keybase.io/yuchi; my proof: https://keybase.io/yuchi/sigs/iHLqZwLH8F262yODwR0xQa6RSxGBb4-BmsSMyUkiHY0 ]
Instead DO USE package dependencies pinning as much as possible:
1. Commit and keep package-lock.json / yarn.lock files
2. Use the right commands in CIs (npm ci / yarn install --frozen-lockfile)
3. Teach others
On the opposite scenario, where you have to take ownership of a large codebase and there’s no one around that can guide you through it, if every time you learn something about it you turn it into a test case you will do your future self a favor and at the same time also tracing your progress.
Find large utilities that are not coupled with a particular part of the application, and put them under heavy testing. Do not fix any failing test before having completed the test suite.
If you have access to other developers that know the codebase, review the tests with them, and fix failing tests together.
Do the same for the frontend / interface code, but do not go for unit testing imho, go for visual regression testing.
And the end of the process you will have a very large knowledge of the codebase, and you will have improved it at the same time.
I had to roll my own persistence implementation on top of IndexedDB and I still haven’t touched the backend synchronization part.
I would love to see Y.js or Automerge more throughly supported by a wider ecosystem of elements that make building a production app easier.
Very happy to see the project big and stable enough to start open sourcing core components of the product.
Now I want to understand in a similar fashion why the incompleteness theorem makes type systems incapable of preventing all bugs!
The fact that the same code can render the initial static page AND the dynamic client interactive UI is the point here.
During the infamous leap second fiasco of Java in 2012 which brought down all JVM servers by saturating the CPU, I saved the day because I was reading about it here on HN while my colleagues were struggling to undestrand why all our environments stopped working.
It took me a few minutes to realize that we were indeed hit by what I just read, look at ten of my colleagues each closely inspecting logs at different ssh sessions, and gleefully give them a precise description of the problem, an approach to verify it and a solution, adding “it’s all over the news guys, you should keep yourself updated”.
With scroll snapping you the user have always control of the scrollable content. What you do not have control over is where it will stop scrolling. A similar behavior to forced guides in a movable element on rails (such as drawers).
This page doesn’t scroll at all, and uses the scroll as a time control for a “movie”. And that is scroll jacking, as it hijacks the scroll position to do something completely different.
This page, at least on mobile, is also guilty of implementing it in the worst way possible: without any alternative scroll indications and without smooth continuous transitions that make it clear that you are controlling the animation through the scroll.
Apple is somewhat better at doing this since the scrolljacking procedure usually brings you to an element which, at the end of a glamourous entrance, actually scrolls away with the page.
Acko is building a React alternative that follows all React semantics but without any render at all. That means no DOM, no nothing. Just components and effects (un)mounting and updating.
If you have some experience with Luxon or similar immutable date/time data types then you’ll get to use Temporal in no time. The API is incredibly ergonomic and apparently useless things (such as YearMonth) become so useful for even simpler cases.
For irreversible (such as deletions) actions I even go one step further with a `--no-dry=<some-non-trivial-value>` in order to force some thinking.
Edit: apparently this is way more common than I thought, by reading comments here!
What I really don’t understand is why they still insist on global namespace polluting APIs. It was ok-ish with CSS Animations’ names, it broke any real project with custom elements (want to have 2 different versions of the same element? Good luck) and then this…
They really don’t care about actual folks trying to incrementally upgrade applications or developing composite applications. All of this requires a level of coordination that is prohibitive to have in enough complex projects…
Odi ed amo…
They didn’t let me through though… :(