Quick update on content extensions in and : landed a couple of patches upstream in preparation for the actual big patch. The new API bits are looking solid and the MiniBrowser now had a CLI option to load a JSON filter rule set.

Pending: enabling the layout tests and solving another assertion — the one from last week is solved and now I kind of understand the disk format of compiled extensions as a side effect. It looks like next I'll need to dive in the bytecode compiler itself

Also, realizing this, if it is true in reality (so far it's a theory floating in my head), kind of helps explain the demise of Firefox OS — it may have even been doomed from the start!

Also, while possible, restricting what native apps can effectively collect or do requires system modifications: a custom ROM, or some kind of non-stock modifications (for example Xposed on Android). On the other hand, even my dad knows how to install a Firefox extension: getting a Web engine tweaked is much more approachable.

Surveillance capitalism prefers native apps, so they make their websites suck on mobile, even when we had the technology to build good mobile webapps for many years 🧐

It just dawned on me that one reason why webapps have not been doing great compared to native mobile apps is that running on a more sandboxed environment (a Web engine) kind of makes collection of user data and presenting ads kind of more difficult. Many users know that adblockers (and to some extent tracking prevention tools) exist for browsing the Web so they would expect the same or similar for Web apps. Native apps? Users have no previous expectation, and it is more difficult to limit them.

Seriously considering a series of blog posts about reducing the disk and memory footprint of .

Recently I have been working on an device which has a 256 MiB memory budget for the embedded Web engine, which is used for the user interface. I have also gotten some report about running WPE on 128 MiB, which is very tight, but definitely doable depending on which Web content one throws at it... I would not recommend 128 MiB for browsing random Internet pages, though! (Tons of JS, anyone?)

It looks as if I might be getting a slight flu, which is something I definitely wasn't looking forward to. Let's see how it goes tomorrow after a good night's rest :blobpats:

On the Edge team, we had a *whole team* dedicated to finding compat bugs, reducing them, and reaching out to site owners with fixes. Sometimes we would reach out to a site owner and they'd say, "Sorry, you don't have enough market share for us to bother fixing this bug."

This is where we get -webkit prefixed CSS in the standard, as well as de-facto standards and "works best in Chrome." This is why both Opera and Edge switched to Chromium.

If you really want to help Firefox succeed, file a bug on webcompat.com/ when you find a broken website. Don't just switch back to Chrome; let Mozilla know there's a problem so they can try to fix it.

When browsers lose market share, they fall into the "compatibility death spiral." Sites don't bother to test, they break, and users flee to the browser that "just works." Mozilla is fighting this battle every day, and it just got harder.

my company (MNT) is looking for office/production space in berlin, around 50sqm. preferably kreuzberg or mitte. we’ll be working on open (libre) hardware and software with a team of three. if you hear sth, please write to lukas@mntmn.com. 🙏

"Contributing to WebKit for a more predictable web platform" – AMP Project amphtml.wordpress.com/2018/12/

This is actually pretty nice to see. The non-standard scroll behavior in iOS Safari has been particularly pain for me; it's great to see it getting fixed.

Cool fact about Linux: I can still test three different browser engines: Blink (via Chrome), Gecko (via Firefox), and WebKit (via Epiphany Browser). There are subtle differences between Epiphany and Safari (no Web Payments, no Service Worker, no -webkit-backdrop-filter, etc.) but it's pretty close.

That's pretty good desktop coverage, and I can debug Chrome and Firefox on Android using ADB, as well as Safari on iOS using github.com/RemoteDebug/remoted. Linux is not bad for web development.

When the history of the web is written, let the record show that I was against this decision and it's part of the reason I left Microsoft. I didn't join the Edge team to help cement Google's dominance of the web.

Hello new friends ✨I'm maruki and I'm making ▮Aftertile▮, an action-adventure about a ghost who helps other ghosts
in my patreon you can help the project, get exclusive wips, sketches and even become a character in the game

Today I have been reminded of that one time when I was allowed to sneak a plain C style cast in the code base because C++ is dumb at times, and always full of pitfalls: trac.webkit.org/changeset/2234

One of the astounding luxuries of being alive right now is high quality audio equipment is affordable and there is a limitless amount of music available. And no, you don't need it all in vinyl unless you are into that. Good quality digital audio is on every scientific metric relevant to humans the best quality.

This is a case of capitalism solving a problem and than completely ruining the solution because once capitalism solves a problem it has no way to grow more than to ruin the solution.

Nevertheless, I haven't yet finished the programs for day 3 of the but on my defense I can say that now I know how to use a language feature (record types) which so far I had not touched in other functional languages that I know (OCaml, some Haskell, and so).

Scheme feels like one *really* needs to master the standard library and the language conventions to really become fluent in it. Has somebody else had the same impression with like languages?

So, I've managed to get the parser combinators from the “(chibi parse)” module to work. I quite don't get it why giving an identifier to the grammar when later it is not used, and what gets referenced to start parsing is one of the functions that implement parsing a non-terminal... but it works and there is a nice “parse-fold” function which applies a parsing function over the input, possibly accumulating it e.g. into a set of records. Also: today I also figured how to use “define-record-type”!

Today in development: I got the content extensions support building for the WebKit port as well, still looking into the release assertion that is hit during evaluation of the extension's bytecode — and learning about how this works internally at the same time, it's being a fun ride :blobpats:

Today's is postponed until the evening, as it seems I have some fires to put off at work. Today I'm trying to use Chibi Scheme's parser combinators module to read the input, because it can no longer be read as a stream of plain Scheme values — which was great to avoid parsing. More later!

For the record: day one done, both problems. It took me a bit to arrive to this gem to read *and* parse a stream of integers coming from standard input:

(chibi io)
(scheme read))

(define values
(port->list read (current-input-port)))

This is pretty cool, and turned the solution for the first problem into a one-liner if we don't count the imports.

Show more

Follow friends and discover new ones. Publish anything you want: links, pictures, text, video. This server is run by the main developers of the Mastodon project. Everyone is welcome as long as you follow our code of conduct!