CanadaHonk Profile Banner
CanadaHonk Profile
CanadaHonk

@CanadaHonk

799
Followers
922
Following
125
Media
1,006
Statuses

Software engineer @mozilla on 🔥🦊 (DOM, web platform). occasional open sourcerer (❆cg,⬢js,+). ecmascript engine nerd. aspiring spec author. they/them 🌈

Joined February 2020
Don't wanna be here? Send us removal request.
@CanadaHonk
CanadaHonk
6 months
:has() is in Firefox beta from today, have fun:
16
73
434
@CanadaHonk
CanadaHonk
8 months
I join @mozilla as a Software Engineer full-time starting October 1st working on @firefox ! More details:
23
10
169
@CanadaHonk
CanadaHonk
7 months
Progress after *one night* of making a web engine from scratch (HTML and CSS parsers, layout, renderer frontend). Screenshot of :
Tweet media one
6
4
92
@CanadaHonk
CanadaHonk
7 months
Small post formally introducing my browser engine, <shadow>: A new novel browser engine made almost entirely from scratch, in JS, runnable in your browser (for fun). Still very early (<1 week old from first line written) and WIP!
4
9
65
@CanadaHonk
CanadaHonk
6 months
Merged! Faster Node fs.writeFileSync() with UTF8 and strings as data. >2x faster when using file descriptors and larger data! 🎉🚀
@CanadaHonk
CanadaHonk
6 months
@nodejs You'll probably find this the most interesting 👀 (featuring fresh new benchmarks!)
1
1
9
4
4
58
@CanadaHonk
CanadaHonk
1 year
Tweet media one
1
0
54
@CanadaHonk
CanadaHonk
8 months
Adding <hr> in <select> to Gecko, hopefully in Firefox 120! (UI WIP)
Tweet media one
3
2
43
@CanadaHonk
CanadaHonk
6 months
Also lazy loading iframes from yours truly :)
0
1
30
@CanadaHonk
CanadaHonk
9 months
New <search> element in Firefox 118 by yours truly :)
@intenttoship
Intent To Ship
9 months
Gecko: Intent to prototype and ship: <search> element
1
1
18
1
2
28
@CanadaHonk
CanadaHonk
10 months
Say hello to porffor, the newest JS engine on the block which compiles JS to Wasm, AOT, in just JS. From scratch excluding parser (using Acorn). 3 weeks old today, scoring >10% for test262.
4
7
26
@CanadaHonk
CanadaHonk
6 months
Another feature for work ✅
@FirefoxNightly
Firefox Nightly 🔥
6 months
<iframe loading=lazy> has landed. Lazily loaded iframes are only loaded when visible, speeding up initial page load. See
8
125
496
0
1
24
@CanadaHonk
CanadaHonk
1 year
Tweet media one
0
0
23
@CanadaHonk
CanadaHonk
8 months
I am implementing *and* shipping attr(name, "fallback") for Firefox 119 today 🎉 First browser to implement or ship :) Test page: Detailed tests for attr():
@intenttoship
Intent To Ship
8 months
Gecko: Intent to prototype and ship: CSS attr() fallback
0
3
10
0
0
22
@CanadaHonk
CanadaHonk
1 year
@PresidentJose3 @soft_fox_lad Spotify uses CEF (Chromium Embedded Framework) and Discord uses Electron (Chromium under the hood).
0
0
21
@CanadaHonk
CanadaHonk
6 months
My new machine/setup does a clobber build of Firefox in 3 minutes, my past setup took >50 minutes!
4
1
21
@CanadaHonk
CanadaHonk
9 months
10 new CSS functions! (shipped by yours truly)
@intenttoship
Intent To Ship
9 months
Gecko: Intent to ship: CSS Values 4 Math functions
0
0
17
1
4
20
@CanadaHonk
CanadaHonk
5 months
for I am become code reviewer, destroyer of CIs
Tweet media one
1
0
19
@CanadaHonk
CanadaHonk
6 months
Me: oh I wonder if this tiny change will impact perf "-26% improvement" oh, okay then
1
1
18
@CanadaHonk
CanadaHonk
8 months
Node sync *times fs funcs hopefully soon to 🔥🚀 (PR shortly from yours truly)
Tweet media one
2
1
18
@CanadaHonk
CanadaHonk
6 months
Added CSS var() and inline SVG support to Shadow, looks much better now!
Tweet media one
0
0
18
@CanadaHonk
CanadaHonk
10 months
My JS engine/compiler passes 8.8% of test262 after ~2 weeks since creation. Most passing are parsing tests (using acorn not my own parser) but still nice :)
1
0
17
@CanadaHonk
CanadaHonk
5 months
Got some very good news I can share soon 👀
4
0
16
@CanadaHonk
CanadaHonk
1 year
Made a dashboard thing for looking at how well new (level 5) CSS media queries are supported in current browsers:
Tweet media one
1
4
16
@CanadaHonk
CanadaHonk
11 months
Just finished my breakout session @webhackfest , was very anxious at the start but was good by the end :) Thanks to all who attended and Igalians for managing everything!
1
4
15
@CanadaHonk
CanadaHonk
7 months
Shadow now supports text wrapping! 🤏
Tweet media one
1
1
15
@CanadaHonk
CanadaHonk
1 year
@NoodleVEVO Electron/etc isn't the problem, developers writing unoptimized huge React webapps is. You can make fast and small apps using web tech if you know what you're doing, just most people don't :(
1
0
14
@CanadaHonk
CanadaHonk
7 months
Progress after night two! Now featuring: - rewritten block/inline model - working links! with preview hint and cursor - light/dark color scheme with switching - basic inspect/debug overlay - many more improvements Demo video:
@CanadaHonk
CanadaHonk
7 months
Progress after *one night* of making a web engine from scratch (HTML and CSS parsers, layout, renderer frontend). Screenshot of :
Tweet media one
6
4
92
1
0
15
@CanadaHonk
CanadaHonk
9 months
@MishaalRahman You have no right to gatekeep builds of someone else's project behind a paywall (profiting you). The GitHub repo lacks a license, so it is all rights reserved for the owners - including binaries. You are violating their legal rights :)
0
0
13
@CanadaHonk
CanadaHonk
7 months
shadow is *somehow* at the top of hacker news for the last ~30 minutes. and everyone is being cool? gg @awesomekling
Tweet media one
2
0
13
@CanadaHonk
CanadaHonk
5 months
Imagine all the bytes saved if URLs never used trailing slashes (they shouldn't be needed, do @ me)
5
1
12
@CanadaHonk
CanadaHonk
7 months
My approach to conferences has gone from never going to one, to submitting talks to interesting ones as I see them because the worst happens is someone says no, and that's okay! The biggest thing I've learnt is to just apply to things, because there isn't really a risk (usually)
1
0
14
@CanadaHonk
CanadaHonk
10 months
My JS engine now has arrays and strings!
Tweet media one
Tweet media two
0
0
13
@CanadaHonk
CanadaHonk
2 years
@roscosmos hey guys you forgot to lock the replies to this tweet. let's go Ukraine 🇺🇦
2
1
10
@CanadaHonk
CanadaHonk
7 months
The sponsorering (sorry if I missed you)
Tweet media one
5
1
13
@CanadaHonk
CanadaHonk
7 months
alright, you convinced me:
2
0
13
@CanadaHonk
CanadaHonk
7 months
Now public! Please keep in mind it is 2 days old and terrible (both code and itself). Day three progress: - rewritten block/inline model (again) - welcome page - various more improvements and internal rewrites
@CanadaHonk
CanadaHonk
7 months
Progress after night two! Now featuring: - rewritten block/inline model - working links! with preview hint and cursor - light/dark color scheme with switching - basic inspect/debug overlay - many more improvements Demo video:
1
0
15
1
2
13
@CanadaHonk
CanadaHonk
7 months
oh wow, my engine runs in @ServoDev . not really usable, but that it has any output is still amazing! cc @dazabani ;)
Tweet media one
1
3
13
@CanadaHonk
CanadaHonk
10 months
@awesomekling That font rendering is impressive
0
0
11
@CanadaHonk
CanadaHonk
6 months
Another work intent 🎉
@intenttoship
Intent To Ship
6 months
Gecko: Intent to prototype and ship: <hr> in <select>
0
3
19
0
1
12
@CanadaHonk
CanadaHonk
6 months
Nodejs compile times are limiting me more than Firefox's, heh.
4
0
12
@CanadaHonk
CanadaHonk
6 months
Officially a @nodejs triager now 🎉
@CanadaHonk
CanadaHonk
6 months
👀
1
4
17
0
0
11
@CanadaHonk
CanadaHonk
7 months
2nd work intent :^)
@intenttoship
Intent To Ship
7 months
Gecko: Intent to prototype and ship: iframe lazy loading
0
6
25
3
0
12
@CanadaHonk
CanadaHonk
9 months
My JS engine now supports for...of! :)
Tweet media one
0
1
12
@CanadaHonk
CanadaHonk
6 months
Shadow can now run (and display) the SunSpider JS benchmark! ☀🚀
Tweet media one
0
0
11
@CanadaHonk
CanadaHonk
11 months
Published V1 of - a like dashboard, but for test262 (standard JS/ECMAScript test suite)! Very WIP (a few days old), please (share and) give feedback!
Tweet media one
1
2
10
@CanadaHonk
CanadaHonk
5 months
I have begun rewriting Porffor (my JS engine) to use runtime types instead of the previous compile-time type inference (jank). Basic demo works now! 🎉 I have been dreading this for a long time (and it was harder than expected). Quite a lot is broken for now (todo!)
Tweet media one
Tweet media two
1
2
14
@CanadaHonk
CanadaHonk
9 months
Working on CSS attr() fallback for Gecko, example: content: attr(data-test, "default value") No other browser has touched this or other advanced attr() features yet (not usage anywhere, just types/fallback). Some rambling for you: (1/3)
2
1
11
@CanadaHonk
CanadaHonk
7 months
Start page for Kraken (older JS benchmark) an hour ago (completely broken/blank) vs now (~spot on) ⚡ Many layout and other fixes! If you want to compare in your browser:
Tweet media one
Tweet media two
0
2
10
@CanadaHonk
CanadaHonk
7 months
@awesomekling Your JIT series made me have the urge to hack on something :^)
0
0
10
@CanadaHonk
CanadaHonk
6 months
Shadow's HTML parser no longer crashes for ! Also, when CSS fails to parse it is now ignored instead of crashing.
Tweet media one
1
1
10
@CanadaHonk
CanadaHonk
10 months
My JS Engine now passes >10% of test262 🎉
Tweet media one
0
1
10
@CanadaHonk
CanadaHonk
1 year
@FarSideOfMoonvy 你好,我是做Gluon的,有什么问题可以随时问我。(用的是翻译机,抱歉。)
0
0
10
@CanadaHonk
CanadaHonk
6 months
Found out why crashed (again) in Shadow and fixed it! % CSS values were not happy. Looks... interesting now?
Tweet media one
1
2
10
@CanadaHonk
CanadaHonk
5 months
For once, I am in a blog writing mood. Two posts for Thursday? (a professional one, and a rambling one about my JS engine and why I haven't touched it for months and oh god why did my past self do this)
2
0
10
@CanadaHonk
CanadaHonk
1 year
@Una Firefox's CSS code is written in Rust though 🤠
1
0
9
@CanadaHonk
CanadaHonk
1 year
Yet another intent™️ (from yours truly)
@intenttoship
Intent To Ship
1 year
Gecko: Intent to prototype and ship: URL.canParse()
1
1
13
1
0
9
@CanadaHonk
CanadaHonk
6 months
I updated all my still open @nodejs (perf) PRs I started a few months ago, all tests pass now 🎉🫡
1
0
9
@CanadaHonk
CanadaHonk
8 months
@intenttoship @bashorov Wasm GC shipping in Firefox 120!!
0
1
8
@CanadaHonk
CanadaHonk
9 months
@briankardell I got shocked at seeing me (in 9th total) on the mozilla-central graph haha
Tweet media one
1
1
8
@CanadaHonk
CanadaHonk
5 months
I was going to write a joke engagement bait post ala "what browser engines do you know??! comment below:" but now I'm actually curious which ones people know in 2023?
5
0
7
@CanadaHonk
CanadaHonk
8 months
@brucel @Keithamus Great example, you can also use it as an attribute like the following via our new Explicit Doctyping™️ technology: <html doctype="yes"> ... </html>
1
0
7
@CanadaHonk
CanadaHonk
1 year
@David3141593 @zagdrath they are used in metrics/analytics:
1
0
7
@CanadaHonk
CanadaHonk
6 months
Second devlog of Shadow, my novel browser engine, is up! Covers everything from last week: big layout additions, perf improvements, and more!
0
1
7
@CanadaHonk
CanadaHonk
7 months
Shadow has slain the Kraken (JS benchmark)! It now runs, and even displays results! 🐙 Also, Shadow can now use the host engine (like eval), not just Wasm, so we can take advantage of JITs (if you choose). ⚡ Commits/push soon! Full recording of the run:
2
0
8
@CanadaHonk
CanadaHonk
11 months
Slides:
0
1
7
@CanadaHonk
CanadaHonk
6 months
Any (popular and/or niche) JS packages you know in need of some perf 👀/♥? might take some looks
4
0
7
@CanadaHonk
CanadaHonk
9 months
New test page! Coming soon to a Gecko near you 🦎
Tweet media one
@CanadaHonk
CanadaHonk
9 months
Working on CSS attr() fallback for Gecko, example: content: attr(data-test, "default value") No other browser has touched this or other advanced attr() features yet (not usage anywhere, just types/fallback). Some rambling for you: (1/3)
2
1
11
1
3
8
@CanadaHonk
CanadaHonk
8 months
I start a new job, my first full-time software job, October 1st (details then), would you be interested in blog(s) on info/details/opinions as it happens? (good luck job seekers!)
Yes
43
No
6
2
1
8
@CanadaHonk
CanadaHonk
11 months
Started a new project which will hurt your brain: javascript aot wasm compiler (in javascript) Yes. It is very limited (knowingly), but works for basic math/number things. Why? I had the idea, so I did it.
1
1
8
@CanadaHonk
CanadaHonk
6 months
I might write a blog post (wow, I know) about how misleadingly simple some web platform features can be (to implement). Mostly as I find it mildly interesting and fell into this trap at least 3 times this year lol.
2
1
8
@CanadaHonk
CanadaHonk
1 year
q&a: why contribute to firefox instead of others? mostly because they have imo the best setup for (external) contributing and seem generally most accepting of contributions in my experience, although probably because they unfortunately need them the most. but love all* engines :)
1
0
8
@CanadaHonk
CanadaHonk
1 year
3rd fastest growing repo on github. what
@GithubGrowing
Paul Paper
1 year
@stevenpetryk gluon-framework/gluon 🎉 308 🌟 today 910 🌟 total
1
0
2
0
0
7
@CanadaHonk
CanadaHonk
6 months
Added initial support for CSS pseudo-elements to Shadow - :root, :link (and :any-link). Not much for now but more to come later ⏱
Tweet media one
0
0
7
@CanadaHonk
CanadaHonk
5 months
"small" metadata update
Tweet media one
0
0
7
@CanadaHonk
CanadaHonk
7 months
More advanced CSS (and JS) support in Shadow! 🎨 It's one week old as of today 🗓️ Next up: borders and pseudo classes 🖼️🔗 Devlog post later today about progress since last post (Oct 27) 📝 Rendering
Tweet media one
0
0
7
@CanadaHonk
CanadaHonk
6 months
no longer crashes Shadow. Looks quite broken but kind of works?
Tweet media one
1
1
7
@CanadaHonk
CanadaHonk
6 months
QuickJS coming back? 👀🤨
@saghul
Saúl Ibarra Corretgé
6 months
📢 Introducing QuickJS-ng! My buddy Ben and I have been working on reingniting the QuickJS project. We just released a new version with top level await and many more ES features, check it out! You can easily install it with jsvu: 🚀
4
14
83
1
0
7
@CanadaHonk
CanadaHonk
6 months
What JS runtime do you actually use 90% of the time?
Node
233
Deno
14
Bun
18
Other (what??)
15
7
3
7
@CanadaHonk
CanadaHonk
5 months
Okay, let's try a firefox dev stream in ~10 minutes? ✅ mic ❌ webcam meh time guaranteed with me having no idea about streaming!
2
4
7
@CanadaHonk
CanadaHonk
7 months
@tmikov @kadikraman This 100%. I made a benchmark before and used an array of 16 numbers instead of 16 arguments, I changed it to 16 arguments and it was ~10x faster in Node.
1
0
7
@CanadaHonk
CanadaHonk
5 months
@moondustmaddie @luciascarlet it's enabled in 121, which is currently in beta and due for release on Dec 19 :)
1
0
7
@CanadaHonk
CanadaHonk
6 months
Added a link to report Shadow page crashes on GitHub Issues (prefilled title and body). You should if you encounter them ;)
Tweet media one
1
1
7
@CanadaHonk
CanadaHonk
1 year
I have a cycle of seeing a cool CSS feature in spec which has no support and then spending hours investigating if I can add it to Firefox, and usually the answer is (eventually) yes :)
1
0
5
@CanadaHonk
CanadaHonk
1 year
@stubbornella For Chrome, uBlock Origin is basically the defacto and allows you to pretty easily customise lists for what to block (ads, social media, malware, bad ads especially, etc)
1
0
6
@CanadaHonk
CanadaHonk
7 months
Bonus @torproject donation
Tweet media one
0
0
7
@CanadaHonk
CanadaHonk
6 months
Shadow no longer renders elements offscreen, results in most sites being ~1.5x faster to render 🖌🚀 Also bonus debug UI 📊📈 (shift + Z)
Tweet media one
0
1
7
@CanadaHonk
CanadaHonk
1 year
@Greyluck_ @soft_fox_lad Node isn't the issue, it consumes barely anything when compared to Chromium.
0
0
7
@CanadaHonk
CanadaHonk
7 months
@RickByers Feels less competitive with more cooperation but engine diversity has still gotten worse anyway. I hope the first trend continues while new novel engines like LibWeb (Ladybird) and Servo become viable long term.
2
1
7
@CanadaHonk
CanadaHonk
1 year
another media query level 5 feature done, and shipping in firefox 113! 🎉 test page: demo video:
@intenttoship
Intent To Ship
1 year
Gecko: Intent to prototype and ship: Scripting media feature
1
2
16
0
1
7
@CanadaHonk
CanadaHonk
5 months
(spoilers) from the top of my head without looking anything up: gecko, blink, webkit, servo, libweb, flow, edgehtml, trident, presto
2
0
6
@CanadaHonk
CanadaHonk
6 months
Curious, any opinions/experiences/?? of coworking generally? (ie in a call with someone while both doing something)
4
0
6