Skip to main content


Okay. Okay!!! I did it!!!

I made a web browser!!!

It is the world's *worst* web browser!!!

But it is a web browser!!!

(The video glitches at the end. This is Ubuntu's fault. The video is supposed to show me loading mastodon.social and "(Page is empty.)" displaying because I choke on the JavaScript. I'm exhausted and not fixing this.)

in reply to mcc

I just made a fucking web browser and you want me to debug why Ubuntu can't create a working screen recording. Come on
in reply to mcc

just for the record I don’t want you to do that
in reply to Glyph

@glyph I know *you* don't, but Ubuntu does, and that's why I'm switching to pop_os
in reply to mcc

I cannot even express to you how terrible this web browser is. Literally all I did was launch a copy of Servo within the process, except I forked Servo, to have a payload hacked into the layout engine DOM parser that records every text node and adds it to a list. (In the process it actually renders the page to a 80x40 image, which gets thrown out.) Then I exfiltrate the list and display each node on its own line. You cannot follow links. Alt text doesn't appear yet so it can't even load zombocom
in reply to mcc

The goal here is to be able to go to the Servo zulip/mailing list thing and say "hello, I made this working thing but I did it wrong, can you explain to me how to do it right?". Trying to decide if I've got there now, or if to hit that point I need to integrate tokio (right now while the page is loading you have to mash the space bar or the page doesn't load. Did I mention that?) before that's non-humiliating

Current source if for some unfathomable reason you want it

github.com/mcclure/cuervo/tree…

in reply to mcc

Okay so I posted a bit of a blog post on the Servo zulip mailinglist thing explaining what I made with Cuervo (that's the text mode web browser based on Servo, see upthread), I don't know how much you'll get out of this but if you think "digging into incompletely-commented Rust programs and trying to figure out wtf the parts do" is interesting you might find this interesting.

servo.zulipchat.com/#narrow/ch…

EDIT: This link does not work logged out!! Sorry!!

This entry was edited (3 months ago)
in reply to mcc

After taking time off to work on a command-line audio DAW (a much more reasonable project), this week I returned to my command line web browser project, Cuervo. It's now up to date with servo top-of-tree, is confirmed to build without git hacks, and has *scrolling!* Also you no longer have to tap the space bar every 0.5 seconds to stop it locking up

github.com/mcclure/cuervo/issu…

I tried to take a video of the scrolling to show you, but this hard locked up Debian, so I figured tonight wasn't my night

in reply to mcc

your description reminds me of the time I took a Heavy Enterprise web rendering engine that had been developed as a delivery system for page renderers written in Perl (technically Mason, but don't look up what that is if you value your sanity) and noticed you could just yoink the perl part and replace it with V8.
The result RAN, but...
in reply to Kevin Granade

@kevingranade I told Zulip I wanted to make that, and they're like "Oh that's very interesting! We should make an API to let embedders access the DOM." but that sounded like it was gonna take months so I was like "OK. I'm gonna do it in the worst way possible"
in reply to The Doctor

@drwho I'm just gonna ship it like this and claim I am taking a hard ideological line against "React"
in reply to mcc

While it has been a while since I have used it, Lynx seems to be worse.
in reply to Clive Thompson

@clive @jeisom There used to be an app named Links that did this (lynx + javascript) but then the JS support bitrotted. So I'm hoping by building on top of an embeddable browser engine I can make something that will not bitrot.

brow.sh does this also (with Firefox instead of Servo) and in a highly futureproofed way but it is a slightly more awkward, heavyweight solution

in reply to mcc

@jeisom

aha, very cool -- did not know about these!

Super interested to see your Servo experiments -- I was poking around the servo repo a month ago wondering what it would be like to spin something out of it

Tim Chambers reshared this.

in reply to Clive Thompson

@clive @jeisom It is very easy to embed in a Rust app, you just include it as a crate. The embedder API is a little limited but it is still growing…
in reply to mcc

@jeisom Intriguing. I wonder how many js-heavy sites can work without extensive simliar-to-chrome/firefox page rendering/css/canvas/etc stuff (I'm definitely not up to speed enough on modern trends in web programming to guess).
in reply to Brian Swetland

@swetland @jeisom I think few of them are relying on this in practice because you don't want to make a game that fails with screen readers. The thing that worries me is captchas
in reply to mcc

@jeisom Though a lot of captchas these days support an audio fallback, I think? Perhaps easier to support than whatever the "count the motorcycles" or "look at these random letters we scribbled on" approaches do.
in reply to Brian Swetland

A terminal can more easily represent graphics than it can convey audio. The goal is for this to work over SSH
This entry was edited (3 months ago)