@krinkle@fosstodon.org
@krinkle@fosstodon.org avatar

krinkle

@krinkle@fosstodon.org

Dutch geek from Enschede living in London.

Principal Engineer at Wikimedia Foundation, https://fosstodon.org/@qunit project lead, jQuery Infra (OpenJSF) https://social.lfx.dev/@jquery, W3C Web Performance, ♥️ FLOSS.

Creative interests: linguistics, music, photography. Work interests: performance, web standards, UI design, digital privacy and security.

Avatar photo by Niek Hidding.

#webperf #PHP #mediawiki #wikipedia #qunit #nederlands #music #muziek #fedi22

Formerly at mastodon.technology (2019-2022).

This profile is from a federated server and may be incomplete. Browse more on the original instance.

TheDJ, to random
@TheDJ@mastodon.social avatar

He @webkit and @jensimmons Can we get some eye balls on printing lazy loaded elements ?

https://bugs.webkit.org/show_bug.cgi?id=224547

This is one of the blockers in adaptation of the loading attribute for Wikipedia, where printing still matters.

Chrome fixed this 1,5 years ago, so Safari is the only straggler (and Wikipedia has to wait a couple years more before they can actually use it after it is fixed)

krinkle,
@krinkle@fosstodon.org avatar

@TheDJ @jensimmons
@webkit

Fixing broken <img loading=lazy> for "Save as PDF" and other offline/print use cases would really help Wikipedia and all other powered sites.

krinkle, to random
@krinkle@fosstodon.org avatar

Recall 10-second Tom? Background character in "50 First Dates", the 2004 rom-com starring Adam Sandler and Drew Barrymore.

He's a punchline to comfort the main character who "merely" has a one-day memory.

But, do you know the real story of Clive Wearing? British music producer who has severe retrograde amnesia for over 20 years. He has a 7-second memory...

Watch the first three minutes to get the gist.

https://youtu.be/k_P7Y0-wgos?feature=shared

https://en.wikipedia.org/wiki/Clive_Wearing

lapcatsoftware, to random
@lapcatsoftware@mastodon.social avatar

It’s unclear how exactly Apple can restrict sideloading to the EU. You can spoof IP addresses with VPNs, you can disable location services, and you don’t need to sign in to iCloud.

In any case, if Apple somehow manages to restrict it to the EU, then the majority of developers worldwide probably won’t participate in sideloading, because they still have to use the crApp Store elsewhere. I wonder how the EU would respond, if at all, to low usage by developers. https://mastodon.social/@macrumors/111402674411099188

krinkle,
@krinkle@fosstodon.org avatar

@lapcatsoftware

Hardware models already vary wildly by region due to radio antenna differences to optimise best for local market:

https://www.apple.com/iphone/cellular/

Do you know how the China/Taiwanese flag censorship works today? I assumed it similarly firmware based, but not sure? I imagine China wouldn't tolerate "set language to English" as way to get a Taiwanese emoji.

brion, to random

well i completely blanked on the command name for "git-review" and had to google for it with a bunch of roundabout search terms like "git gerrit pull request submit command wikimedia" :D

so i think it's time to put aside work catch-up for the day

krinkle,
@krinkle@fosstodon.org avatar

@brion

I usually type gogo<tab> to upload a patch.

> alias gogogerrit='git review -R'

https://github.com/Krinkle/dotfiles/blob/v2023.09/hosts/primary/index.bash#L375

ianbetteridge, to random
@ianbetteridge@writing.exchange avatar

The images may be broken but this is still a legendarily great product review. https://lookrobot.co.uk/2013/01/14/the-panasonic-toughpad-press-conference/

krinkle, (edited )
@krinkle@fosstodon.org avatar
krinkle, to retrogaming
@krinkle@fosstodon.org avatar

How did Commander Keen do adaptive tiling, back in the 1980s? Explanation by Fabien Sanglard @fabinou:

https://fabiensanglard.net/ega/

Source code: https://github.com/keendreams/keen

#commanderkeen #RetroGaming

krinkle,
@krinkle@fosstodon.org avatar

Amazon sure squeezes the shit out of online book sales. Damn.

https://fabiensanglard.net/gebbdoom/

krinkle, to random
@krinkle@fosstodon.org avatar

The Rainbow Connection analysed

This is one of my favourite songs. It occupies my brain for hours at a time, on a good day.

Tim Carmody @tim:
"""
It’s sung by a puppet, performed by someone who, for all his unbounded talents for voice and performance, can’t really sing. But I think it’s the greatest song ever written for a film.
"""

https://snarkmarket.com/2021/8283/

nolan, to random
@nolan@toot.cafe avatar

I'm not a Ruby developer, but I really enjoyed DHH's keynote at Rails World https://youtu.be/iqXjGiQ_D-A

I don't agree with all the specific points, but I really like the gonzo style of asking "Why not make everything radically simpler?" A lot of times in software we go for solutions that add 5% value but are 2x more complex (those numbers are made up).

krinkle, (edited )
@krinkle@fosstodon.org avatar

@nolan

For Wikipedia, we pioneered a no-bundle approach in 2010, with a modpagespeed-like runtime transform in the MediaWiki PHP app.

At the time, sites often loaded unversioned unmodified separate script tags. Closure Compiler or cat+JSMin was state of the art.

We went with no bundle and web native-first. Introduced modules (npm wasn't known yet). And produce HTML that bundle/concat/minify on-the-fly in PHP, with (for prod) CDN/browser cache on top. Great local DX.

https://www.mediawiki.org/wiki/ResourceLoader/Architecture

krinkle,
@krinkle@fosstodon.org avatar

@nolan

Just finished watching. Wow, that resonates all the way thru. I've been unable to express it so succinctly.

A few months ago I re-envisioned docsearch along the same lines: https://github.com/jquery/typesense-minibar

  • no build step
  • no typescript
  • no minification for CSS or JS.
  • HTML-first progressive enhancement.
  • self-hosted single file.
  • no dependencies, plain JS, under 2kB.
  • feature complete.

Live on https://api.jquery.com and https://qunitjs.com (static site and WordPress respectively).

krinkle, (edited ) to Taskmaster
@krinkle@fosstodon.org avatar

Offered without context:

"""
select a firm swede, the smaller in size the sweeter.
"""

Yep, kids are cute. Same in Scandinavia, I guess. Did you just say "firm"?

"""
medium size is best, depending on how you will use it.
"""

Wait what?

"""
avoid larger swedes as they can be bitter.
"""

Okay, this I can relate to, see also Greg Davies on Taskmaster. (I'm a tall Dutch person myself, we're not alll bitter!)

w96k, to random
@w96k@fosstodon.org avatar

Slicing php arrays suck so much. To slice both ends I need to calculate length of array and do some calculation on it instead of just putting second index there.

https://www.php.net/manual/en/function.array-slice.php

krinkle,
@krinkle@fosstodon.org avatar

@w96k

do you mean like array_slice($x, 2, count($x)-3)?

Both start and and support negative numbers directly so as to not need to do that.

krinkle, (edited ) to mediawiki
@krinkle@fosstodon.org avatar

All major browsers rely on a dark secret: the quirks where native code or the UA stylesheet is varied based on which site you're on.

They're a hell to debug if you're ever caught in one, but they make for interesting stories!

Example:
https://neugierig.org/software/chromium/notes/2009/08/mediawiki-workaround.html

Fix for SVN deadlink:
https://static-codereview.wikimedia.org/MediaWiki/53141.html

Source code of doom:
https://github.com/WebKit/WebKit/blob/main/Source/WebCore/page/Quirks.cpp

History:
https://github.com/WebKit/WebKit/commits/main/Source/WebCore/page/Quirks.cpp

krinkle, to random
@krinkle@fosstodon.org avatar

@jeresig Looks like your blog is having difficulty serving its RSS feed.

The advertised FeedBurner proxy appears to be serving an HTML error page as well (which in turn leads to an XML error) at https://feeds.feedburner.com/JohnResig

The presumed source at
https://johnresig.com/feed/ returns a (different) error.

krinkle, to infosec
@krinkle@fosstodon.org avatar

How does Wikimedia approach security and performance?

We're quite selective in our dependencies and often audit the sources ourselves. Progressive enhancement makes for a blazing fast and accessible site, and, I argue, it's also the cheaper choice in the long run!

Read more over @openjsf:

https://openjsf.org/blog/2023/10/05/wikimedia-case-study/

krinkle, to Ethics
@krinkle@fosstodon.org avatar

What are the ethical expectations of an open source project? by Alex Kladov

https://matklad.github.io/2023/10/18/obligations.html

brion, to random

i've noticed a lot of programming nerds straight up pronounce the $ on scripting-language style variables as the word "dollar"

i grew up pronouncing it as a glottal stop in my internal monolog :D

krinkle,
@krinkle@fosstodon.org avatar

@brion

The first 25 paragraphs, not particularly illuminating. It mentions obstructing airflow. I mean I know what that sounds like generally, [queue Bruce Willis/Jason Statham/Jack Bauer strangling people] lots of.. sounds!

Audio sample: "Ah A". ok...

Paragraph 26: "In English, the glottal stop occurs between the vowel sounds in uh-oh". Oh that!

It's the "bo'l o' wa'er" phenomenon: glottal stop, or should I say [lang=en-gb-cockney] glo'al stop?

https://en.wikipedia.org/wiki/Glottal_stop

krinkle, to webdev
@krinkle@fosstodon.org avatar

Breakdown of GPU attack:

  • Cross-origin iframe should be opaque (can't see fetch response, DOM, or draw to canvas).
  • CSS filters on iframe to skew 1 pixel into 2000px black/white square.
  • Draw complex SVGs (>16ms).
  • Observe time between requestAnimationFrame calls.
  • Repeat for 30 min.
  • Deduce that render speed might imply the GPU saw similarity (think GZIP) between your SVG and the iframe pixel elsewhere onscreen.

https://arstechnica.com/security/2023/09/gpus-from-all-major-suppliers-are-vulnerable-to-new-pixel-stealing-attack/

https://www.hertzbleed.com/gpu.zip/GPU-zip.pdf

krinkle, (edited ) to webdev
@krinkle@fosstodon.org avatar

"Google Sites" now supports embedding images.

What you want: <img style="margin: 0 auto;">

What you get:

  • ~100 HTML elements, including 57 unique CSS class names across 83 attributes, 30 hidden DIVs, 3 iframes, 2 external script tags, 2 inline script tags, and 1 actual <img> tag.
  • the <img> is inside an iframe, nested 3 (!) levels of iframes deep.
  • an image cut off in both X and Y directions.
  • not one, but two unwanted scrollbars.

#enshittification #webperf #SemanticHTML #html5 #HTML

brion, to random

fun fact: WebP supports two entirely unrelated compression types, VP8 intraframe compression (best for photo-like images) and "WebP Lossless" which is kinda like PNG with fancier filtering

Also, everybody hates WebP only because whether any given tool supports it is super hit-and-miss and web browsers / desktop operating systems don't make conversion to supported formats as transparent as you might hope.

And also because libwebp had a security vuln recently 🙃

krinkle,
@krinkle@fosstodon.org avatar

@brion

... With the narrow sweet spot webp seems to hold. https://siipo.la/blog/is-webp-really-better-than-jpeg

... and how hostile it is to any practical freedom and remixing by normal people.

.. WordPress rejecting it for output (input only) https://make.wordpress.org/core/2022/09/11/webp-in-core-for-6-1/

I wonder if we should turn it off from WMF's Varnish/Thumbor rules.

krinkle, to random
@krinkle@fosstodon.org avatar

@kostajh

Ten years and counting... switched to Silent Mode (or "Vibration Mode") after I got an iPhone 4S and not looked back. Very few apps are permitted badges or Notif Center presence, and Lock Screen limited to calendar events and VIPs. Sleep Mode scheduled every evening/night.

I occasionally run into a bug where some apps won't play audio tracks (mistaking it for mute even for user-initiated playback), but other than that, wouldn't want it any other way.

https://www.kostaharlan.net/posts/do-not-disturb/

krinkle, (edited ) to random
@krinkle@fosstodon.org avatar

I love "Shouting in the Datacenter" ft Brandon Gregg, but mostly for the work environment and attitude that enabled it.

To have or be the colleague with the curiosity, care, attention to detail, enthusiasm. To me that's both more valuable and actually more achievable than the very specific 1-in-a-million video.

Making-of talk a year later:
https://youtu.be/lMPozJFC8g0

Original video:
https://youtu.be/tDacjrSCeq4

via @yuvipanda https://hachyderm.io/@yuvipanda/110952324595800751

krinkle, to irony
@krinkle@fosstodon.org avatar

:blobfoxfingerguns:

I present the Universal Forever Immutable Protocol, Version 2.1.

:oh_no_bubble:

Brought to you by the writers of USB 4.1 Type C, and the producers of Temporary Solutions May Be Permanent Around Here.

krinkle, to random
@krinkle@fosstodon.org avatar

1998: <div onclick="foo(bar)"></div>

2023: <VeryNiceDiv onClick={foo(this.bar)} />

Ah... the progress we've made.

🥸

The former was of course never best practice. It was poor separation of concerns to mix JS in your content.

Btw, did you know that the former actually checks local props/methods first?

Native event attributes are evaluated in an implicit 'with(this){}' block. That's why stuff like <textarea onclick="select()"> or <input onblur="alert(value)"> works even without 'this'.

bagder, to random
@bagder@mastodon.social avatar

I have now removed over 500,000 lines from files in the git repo. Doubled since March 2011.

I have also added 687,000 lines. Doubled since April 2008

krinkle, (edited )
@krinkle@fosstodon.org avatar

@bagder

May I ask how you generated this graph? Some kind of parallel SLoC calculator that scans each commit from a Git repo in multiple threads? Something much simpler?

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • kavyap
  • DreamBathrooms
  • thenastyranch
  • magazineikmin
  • InstantRegret
  • GTA5RPClips
  • Youngstown
  • everett
  • slotface
  • rosin
  • osvaldo12
  • mdbf
  • ngwrru68w68
  • JUstTest
  • cubers
  • modclub
  • normalnudes
  • tester
  • khanakhh
  • Durango
  • ethstaker
  • tacticalgear
  • Leos
  • provamag3
  • anitta
  • cisconetworking
  • lostlight
  • All magazines