RSSAmplifier

Blog

Tech Blog - Matthew Gaudet

Blogging about technical stuff, work, etc.

mgaudet.caRSS feed ↗20 posts

Latest posts

Non-Traditional Profiling

Also known as “you can just put whatever you want in a jitdump you know?” When you profile JIT code, you have to tell a profiler what on earth is going on in those JIT bytes you wrote out. Otherwise the profiler will shrug and just give you some addresses. There’s a decent and fairly common format called jitdump , which originates in perf but has become used in more places. The basic thrust of the…

Using Keyboard Maestro to help with PiKVM Clipboard

One of my least favourite things about PiKVM (which is otherwise awesome) is that there’s not a great ‘clipboard sync’ model for it; which is a pain when all you want to do is paste a URL or something into a remote machine. LocalSend has been very very helpful for some of this (especially the reverse: paste back to my host). Today though, I had a freaking brain wave: (Keyboard Maestro Macro…

Summer of Sharpening

As we head into fall, I wanted to write up a bit of an experience report on a project I ran this summer with a few other people on the SpiderMonkey team. A few of us on the team chose to block off some time during the summer to do intentional professional development. Exploring topics that we hadn’t looked into, often due to a feeling of time starvation. Myself, I blocked off 2 hours every Friday…

Getting myself out of a sticky jujutsu situation

So I managed to get myself into a sticky situation with JJ where I had squashed together a whole bunch of crappy commits with the intention of then taking the large one and cutting it apart. So I squashed, rebased, then started cutting it apart... only to realize that I had goofed a bit on my squash and included an experimental change I didn’t want to be part of the original commit. So now what. I…

Finding hot allocation sites with bpftrace

So, last time I said I was hooked, and that I wrote an allocation profiler. That’s true! And it was comparatively easy. Starting from the baseline of SpiderMonkey which sleeps before exit from the last blog post, the profiler looks like this: BEGIN { printf("Attaching probes for %s", str($1)) } uprobe:$1:cpp:"*gcprobes::CreateObject*" { // 7 frames as the hook is ususally quite deep, so we want //…

Exploring a language runtime with bpftrace

So I have been having quite a bit of fun learning about eBPF. It’s been on my todo list for like two or three years, but I’ve finally made the time to actually start to figure it out, and have already found some neat stuff, and had to do some fun hacking. Let’s set the stage. eBPF is an instrumentation and tracing system built into Linux (and Windows these days!). The general thrust of it is that…

A Performance Investigation Challenge

I really liked matklad’s Performance Visualization challenge (partially because it didn’t take me long to find the line with samply , which made me feel good). Here’s a skills gap or research question perhaps : How do you identify an impactful but diffuse problem. I have a concrete example in mind. So, nine months ago, trying to optimize a function in Speedometer 3 , my colleague Iain Ireland dug…

Learning about C++ Direction Setting

Another blog post written wearing only my hat, rather than any Mozilla or TC39 Delegate related hats Last year while considering some JavaScript standards evolution, I wanted to look into how C++ handles some of the challenges. I dug through some documents, and wanted to share some of my findings here as a pointer for future discussion. Design Aims One of the fascinating artifacts is a set of C++…

Upgrade issue with jujutsu

Trying to update jujutsu I had a heck of a time. A previously working command stopped working. Running in a different directory, updating rust neither worked. The issue is this commit in the jujutsu repo. The symptom is: matthew@ZenTower:~$ cargo binstall --strategies crate-meta-data jj-cli WARN Failed to retrieve token from `gh auth token` err=Os { code: 2, kind: NotFound, message: "No such file…

32 Bit Build of SpiderMonkey -- First in a while

Some quick notes on doing a recent 32 bit build of SpiderMonkey Mozconfig: ac_add_options --target=i686-pc-linux ac_add_options --enable-application=js ac_add_options --disable-optimize ac_add_options --enable-debug ac_add_options --enable-ccache=sccache ac_add_options --disable-tests # Dump opt builds into another dir. mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-debug-shell-@CONFIG_GUESS@ Machine…

User Defined Primitives: A Sketch

The following is written in my Personal capacity, and does not represent the views of the SpiderMonkey team, Mozilla, TC39 or any other broader group than just what’s between my ears. I wear no hats here. I want to propose a little thought experiment for the JS language. It’s pretty janky, there’s lots to quibble about, but I find myself coming back to this again and again and again. tl;dr : We…

Making Teleporting Smarter

(This is a republish of an article posted at SpiderMonkey.dev for my own archiving purposes) Recently I got to land a patch which touches a cool optimization, that I had to really grok. As a result, I wrote a huge commit message . I’d like to expand that message a touch here and turn it into a nice blog post. This post assumes roughly that you understand how Shapes work in the JavaScript object…

5 Years of Compiler Jobs

Turns out I missed the 5 year anniversary of my CompilerJobs page by a little more than a week. From the initial commit , myself and many helpful contributors have Made 308 Commits Listed 196 (!!) companies; not including companies who have come and gone 543 GitHub Stars It’s my sincere hope that it’s lived up to my original hope , inspiring people to pursue the area by helping them realize that…

Dump the commit contents into the editor when editing a Jujutsu commit

I’m so happy with this config that I need to share it even though I’ve only been using this for a few hours. Put this in ~/.config/jj/config.toml. [templates] draft_commit_description = ''' concat( description, surround( "\nJJ: This commit contains the following changes:\n", "", indent("JJ: ", diff.stat(72)), ), surround("\nJJ: Diff:\n", "", indent("JJ: ", diff.git(4))) ) ''' It’s awesome. Now…

A Case for Feminism in Programming Language Design

I wish I had read this paper by Felienne Hermans and Ari Schlesinger before going to SPLASH . Felienne’s blog post is worth reading as an introduction , and here’s the stream of her presentation , which I highly recomend -- she's an excellent compelling communicator. I don't have much to add, beyond a few quotes I felt worthwhile to share: Coming back to my insider-outsider perspective, I…

SPLASH 2024: Impressions and Feelings

I thought it would be useful to sit down and write up some of my thoughts on SPLASH 2024 while they are still fresh. Due to happy nuptials (& a pressing desire to get home), I was only able to attend Splash for 2.5 days; Wednesday, Thursday and Friday morning. The beauty of any conference is of course the Hallway Track, so I have many papers and presentations I need to read or watch that I missed.…

Remove Un-Needed audio devices from macos.

From experimenting with MS Teams and mmhmm I had a pair of useless audio devices for like a year. Finally got rid of them! Looked in /Library/Audio/Plug-Ins/HAL and deleted, as root, the two plugins that were undesirable. Reboot, and audio devices were gone!

Gut Checking Jujutsu vs Sapling

To be honest, I continue to have no idea where I will land version control wise. Here’s some pro-cons that are in my head at the moment. Pro Jujutsu I appreciate the versioned working directory The .git support is really nice. I am getting used to the ability to type a 3-letter change id to do work with changes. Con Jujutsu No absorb No histedit I'll be honest, I find reworking history to be…

Connecting my PiKVM Power Button to Home Assistant

This is mostly a note to myself if I ever want to figure out how I did this. Edit configuration.yaml . I added a shell service: shell_command: pikvm_power: "curl -X POST -k -u admin:super_secret_password https://pikvm-ip/api/atx/click?button=power" Reboot HA; needed for the shell_command.pikvm_power service to appear. Add a button helper Add an automation that calls the service when the helper…

Jujutsu Two: A better experience

I've been working with Jujutsu the last month or so. It's actually been really nice. It's yet another reminder that, despite the version control system monoculture encouraged by GitHub, there's still innovation and interesting things happening in this space. It reaffirms my believe that plain git is really no longer where we should be aiming for as a community. Last time I investigated Jujutsu I…