Sam
@samuelmaddock.com
Software Engineer @ Slack・Maintainer of Electron・NYC
samuelmaddock.com
samuelmaddock.com
Pinned
Sam
@samuelmaddock.com
· Nov 10
Progress on chrome extension manifest v3 support in Electron. Dark Reader is fully working now.
Using atproto to alias user IDs because I _really_ don't want to manage user registrations
handle → did → PDS → com.getmetastream.actor.profile → id
Shortened, samuelmaddock.com → without modifying DNS or storing the mapping on my own servers
pdsls.dev/at://did:plc...
handle → did → PDS → com.getmetastream.actor.profile → id
Shortened, samuelmaddock.com →
pdsls.dev/at://did:plc...
October 29, 2025 at 1:28 AM
Using atproto to alias user IDs because I _really_ don't want to manage user registrations
handle → did → PDS → com.getmetastream.actor.profile → id
Shortened, samuelmaddock.com → without modifying DNS or storing the mapping on my own servers
pdsls.dev/at://did:plc...
handle → did → PDS → com.getmetastream.actor.profile → id
Shortened, samuelmaddock.com →
pdsls.dev/at://did:plc...
Old tweet of mine is basically describing atproto. Thanks @pfrazee.com
Also, "x.com" is revisionist history, I did not write that.
Also, "x.com" is revisionist history, I did not write that.
October 14, 2025 at 11:20 PM
Old tweet of mine is basically describing atproto. Thanks @pfrazee.com
Also, "x.com" is revisionist history, I did not write that.
Also, "x.com" is revisionist history, I did not write that.
exporting only America's finest culture to Japan
April 30, 2025 at 8:00 AM
exporting only America's finest culture to Japan
Sometimes I need to reverse engineer websites for @getmetastream.com
My starting point is logging Object.keys(globalThis). Since JS objects retain the order that keys are set, the end of this list are the global variables set by the website.
Helps with finding any initialized video players.
My starting point is logging Object.keys(globalThis). Since JS objects retain the order that keys are set, the end of this list are the global variables set by the website.
Helps with finding any initialized video players.
April 22, 2025 at 4:59 AM
Sometimes I need to reverse engineer websites for @getmetastream.com
My starting point is logging Object.keys(globalThis). Since JS objects retain the order that keys are set, the end of this list are the global variables set by the website.
Helps with finding any initialized video players.
My starting point is logging Object.keys(globalThis). Since JS objects retain the order that keys are set, the end of this list are the global variables set by the website.
Helps with finding any initialized video players.
Found some lesser known links for folks deploying desktop apps on stores. Useful as "check for updates" actions.
Open the Mac App Store and check for updates
macappstore://showUpdatesPage?scan=true
🪟 Open the Microsoft Store and go to updates page
ms-windows-store://downloadsandupdates
Open the Mac App Store and check for updates
macappstore://showUpdatesPage?scan=true
🪟 Open the Microsoft Store and go to updates page
ms-windows-store://downloadsandupdates
April 14, 2025 at 8:41 PM
Found some lesser known links for folks deploying desktop apps on stores. Useful as "check for updates" actions.
Open the Mac App Store and check for updates
macappstore://showUpdatesPage?scan=true
🪟 Open the Microsoft Store and go to updates page
ms-windows-store://downloadsandupdates
Open the Mac App Store and check for updates
macappstore://showUpdatesPage?scan=true
🪟 Open the Microsoft Store and go to updates page
ms-windows-store://downloadsandupdates
til archive.org just has entire anime series available for viewing right in your browser
archive.org/details/seri...
archive.org/details/seri...
Serial Experiments Lain English Dubbed : Free Download, Borrow, and Streaming : Internet Archive
All 13 Serial Experiments Lain episodes English dubbed in order. Download the Matroska (.mkv) files for the best quality.Lain Iwakura, an awkward and...
archive.org
March 23, 2025 at 4:04 AM
til archive.org just has entire anime series available for viewing right in your browser
archive.org/details/seri...
archive.org/details/seri...
committing web browser crimes using declarativeNetRequest
March 13, 2025 at 3:13 PM
committing web browser crimes using declarativeNetRequest
Watched Hideaki Anno's Love & Pop last night.
February 24, 2025 at 3:33 PM
Watched Hideaki Anno's Love & Pop last night.
@nodejs.org made it simple to add native messaging support for extensions. Now iCloud Passwords can talk to my @electronjs.org browser
February 5, 2025 at 4:25 AM
@nodejs.org made it simple to add native messaging support for extensions. Now iCloud Passwords can talk to my @electronjs.org browser
@electronjs.org running as an overlay on Steam Deck 😍
January 30, 2025 at 2:41 PM
@electronjs.org running as an overlay on Steam Deck 😍
@froggi.es I'm completely new to vulkan layers and came across your vkroots project. If I installed a layer on SteamOS, would it be able to overlay games? Or do I have a deep misunderstanding here?
January 29, 2025 at 4:08 AM
@froggi.es I'm completely new to vulkan layers and came across your vkroots project. If I installed a layer on SteamOS, would it be able to overlay games? Or do I have a deep misunderstanding here?
Rolling out Chrome's IWAs (Isolated Web Apps) for Windows/Mac/Linux "isn't in the short-to-medium term plans". A bit disappointing that this feature won't be available widely for a long time.
I'm guessing this is to reduce the risk of malicious apps?
groups.google.com/a/chromium.o...
I'm guessing this is to reduce the risk of malicious apps?
groups.google.com/a/chromium.o...
January 23, 2025 at 9:50 PM
Rolling out Chrome's IWAs (Isolated Web Apps) for Windows/Mac/Linux "isn't in the short-to-medium term plans". A bit disappointing that this feature won't be available widely for a long time.
I'm guessing this is to reduce the risk of malicious apps?
groups.google.com/a/chromium.o...
I'm guessing this is to reduce the risk of malicious apps?
groups.google.com/a/chromium.o...
Chromium devs are so quick to review small code changes, even from external contributors.
I need to know how they managed that.
I need to know how they managed that.
January 22, 2025 at 12:29 AM
Chromium devs are so quick to review small code changes, even from external contributors.
I need to know how they managed that.
I need to know how they managed that.
I wrote my first lines of Rust code submitting a fix to @sentry.io's symbolicator service: github.com/getsentry/sy...
Thankfully, they've done a great job setting up and documenting their codebase which made it very straightforward 🦀
Thankfully, they've done a great job setting up and documenting their codebase which made it very straightforward 🦀
fix: allow optional abs_path and lineno for JsFrame by samuelmaddock · Pull Request #1581 · getsentry/symbolicator
fixes #1580
It's possible for V8 to format a JS frame location to only contain <anonymous> (see AppendFileLocation). In such cases, JSON deserialization should pass, but symbolification s...
github.com
January 10, 2025 at 7:23 PM
I wrote my first lines of Rust code submitting a fix to @sentry.io's symbolicator service: github.com/getsentry/sy...
Thankfully, they've done a great job setting up and documenting their codebase which made it very straightforward 🦀
Thankfully, they've done a great job setting up and documenting their codebase which made it very straightforward 🦀
@1password.bsky.social chrome extension in @electronjs.org using electron-chrome-extensions.
To make this work, a new v8 scripting context is added to service workers in Electron to allow preload scripts to provide extension APIs.
To make this work, a new v8 scripting context is added to service workers in Electron to allow preload scripts to provide extension APIs.
December 16, 2024 at 4:17 PM
@1password.bsky.social chrome extension in @electronjs.org using electron-chrome-extensions.
To make this work, a new v8 scripting context is added to service workers in Electron to allow preload scripts to provide extension APIs.
To make this work, a new v8 scripting context is added to service workers in Electron to allow preload scripts to provide extension APIs.
Many hours were required to find this one line fix. I'm glad I don't need to write multi-threaded code often in my day-to-day...
December 9, 2024 at 4:00 AM
Many hours were required to find this one line fix. I'm glad I don't need to write multi-threaded code often in my day-to-day...
Do delegates feel natural in JavaScript?
class Installer {
constructor(delegate) {
this.delegate = delegate
}
install() {
if (this.delegate) {
const event = new Event()
this.delegate?.beforeInstall(event)
if (event.defaultPrevented) return
}
}
}
class Installer {
constructor(delegate) {
this.delegate = delegate
}
install() {
if (this.delegate) {
const event = new Event()
this.delegate?.beforeInstall(event)
if (event.defaultPrevented) return
}
}
}
November 26, 2024 at 4:26 PM
Do delegates feel natural in JavaScript?
class Installer {
constructor(delegate) {
this.delegate = delegate
}
install() {
if (this.delegate) {
const event = new Event()
this.delegate?.beforeInstall(event)
if (event.defaultPrevented) return
}
}
}
class Installer {
constructor(delegate) {
this.delegate = delegate
}
install() {
if (this.delegate) {
const event = new Event()
this.delegate?.beforeInstall(event)
if (event.defaultPrevented) return
}
}
}
had to complete a minigame to finish upgrading chromium in electron today
November 22, 2024 at 8:48 PM
had to complete a minigame to finish upgrading chromium in electron today
me: how hard could it be to add symlink support for unzipping files?
the source code:
the source code:
November 20, 2024 at 2:22 AM
me: how hard could it be to add symlink support for unzipping files?
the source code:
the source code:
looking into what's going on in an abandoned side project to find out all of my analytics are broken 🥲
November 18, 2024 at 3:34 PM
looking into what's going on in an abandoned side project to find out all of my analytics are broken 🥲
CoffeeScript? In the year 2024?
github.com/lmaccherone/...
github.com/lmaccherone/...
github.com
November 16, 2024 at 5:10 PM
CoffeeScript? In the year 2024?
github.com/lmaccherone/...
github.com/lmaccherone/...
more people who like Japanese food need to know about sukiyaki
November 16, 2024 at 12:37 AM
more people who like Japanese food need to know about sukiyaki
Reposted by Sam
"A new edition of Raising the Bar is coming back into print in 2025, expanded to include the Half-Life 2 Episodes"
November 15, 2024 at 10:16 PM
"A new edition of Raising the Bar is coming back into print in 2025, expanded to include the Half-Life 2 Episodes"
downloading a chrome extension from the chrome web store in an electron browser ✨
November 13, 2024 at 1:18 AM
downloading a chrome extension from the chrome web store in an electron browser ✨