This Week I Learned: 2022W36

Wed Sep 14 2022

After a few weeks of holidays, I’m back! :)


You can now control how the page breaks during scrolling only with CSS (no Javascript needed), thanks to scroll-snap-type and scroll-snap-align. Source here .


The pseudorandom number generator used by PHP, Python, Ruby, Matlab or Excel is the same. It’s called Mersenne Twister . I still struggle to understand 1% of the Wikipedia article because of my total lack of Math knowledge.

Airtags - Apple - Privacy

I just heard about Airtags . Supposedly launched to help you find your keys or other items. It seems like it has been used for malevolant purposes. You can check this Guardian article here . I find it really disturbing.


Git History allows you to easily see the changes in a Git file. Just replace github (or gitlab) in the URL with githistory.xyz. For example: This Symfony file and its history . Obviously doesn’t work with private repositories, but quite interesting! I like the visual representation.

Partial - Currying

When diving into the Python functools module, I realized I stumbled upon the partial function. I was a bit confused because I thought partial was the same as currying.

It seems it’s two different concepts (even if it’s still quite narrow to me).

You can check an article about the differences here .

PHP - Partial Function Application

There is no way to easily make a partial function in PHP. An RFC was proposed but was rejected.

If you want to achieve it, you will need to create your own partial application. One implementation example:


function add(int $x, int $y, int $z) {
    return $x + $y + $z;

function partial(callable $fn, ...$args) {
    $newCallable = function (...$newArgs) use ($fn, $args) {
        $finalArgs = array_merge($args, $newArgs);

        return $fn(...$finalArgs);

    return $newCallable;

$add2 = partial(add(...), 2);
$add3 = partial($add2(...), 1);

$add3(2); // 5

Here we use the (...) notation, introduced in PHP 8.1 .