View gist:cdc2ebf961bda98fcb4c2bbfe88c1454
RectWithSize device_rect = prim.local_clip_rect;
device_rect.p0 -= prim.task.content_origin;
device_rect.p0 *= uDevicePixelRatio;
device_rect.size *= uDevicePixelRatio;
vec2 local_pos = prim.task.common_data.task_rect.p0 +
glyph_pos * res.scale + uDevicePixelRatio * (glyph.offset - prim.task.content_origin),
View crash.log
Assertion failure: mLastContentProcessedEvent <= mLastAPZProcessedEvent, at /Users/ABeingessner/dev/gecko/gfx/layers/apz/src/FocusState.cpp:32
#01: mozilla::layers::IAPZCTreeManager::ReceiveInputEvent(mozilla::WidgetInputEvent&, mozilla::layers::ScrollableLayerGuid*, unsigned long long*)[/Users/ABeingessner/dev/gecko/objdebug/dist/ +0xff83bb]
#02: nsBaseWidget::DispatchInputEvent(mozilla::WidgetInputEvent*)[/Users/ABeingessner/dev/gecko/objdebug/dist/ +0x2e3cff8]
#03: mozilla::widget::TextEventDispatcher::DispatchInputEvent(nsIWidget*, mozilla::WidgetInputEvent&, nsEventStatus&)[/Users/ABeingessner/dev/gecko/objdebug/dist/ +0x2e61ab8]
#04: mozilla::widget::TextEventDispatcher::DispatchKeyboardEventInternal(mozilla::EventMessage, mozilla::WidgetKeyboardEvent const&, nsEventStatus&, void*, unsigned int, bool)[/Users/ABeingessner/dev/gecko/objdebug/dist/ +0x2e62920]
#05: mo
// Rust Library
pub enum DisplayItem {
Fill(Rect, Color),
Image { id: u32, bounds: Rect },
View gist:4eae41c5222925519ac365102506a083
<UnscaledFontFontconfig> 0x7f81769b25e0 1 AddRef 1 [thread 0x7f8190f854c0]
#01: ???[/home/gankro/gecko/objdebug/dist/bin/ +0x1b1e7c7]
#02: ???[/home/gankro/gecko/objdebug/dist/bin/ +0x1ae7e5a]
#03: ???[/home/gankro/gecko/objdebug/dist/bin/ +0x1af4d7d]
#04: ???[/home/gankro/gecko/objdebug/dist/bin/ +0x1af5ae5]
#05: ???[/home/gankro/gecko/objdebug/dist/bin/ +0x2c51af8]
#06: ???[/home/gankro/gecko/objdebug/dist/bin/ +0x16872d0]
#07: ???[/home/gankro/gecko/objdebug/dist/bin/ +0x1299e13]
#08: ???[/home/gankro/gecko/objdebug/dist/bin/ +0x12a1900]
#09: ???[/home/gankro/gecko/objdebug/dist/bin/ +0x12a2a2b]

I was contacted a few weeks ago by someone interested in my time working on Homestuck. I dumped a huge pile of thoughts and feels, and they wrote an article.

The article understandably is fairly edited, but I spent a bunch of time on my replies, and they're pretty personal, so I felt like archiving my response here. So here's the raw content of the email I sent:

So some disclaimers here: I don't have the best memory, and a lot of the relevant history here is content on the MSPA forums, which as far as I can tell have been completely annihilated from the internet. (a genuine tragedy) Consider everything I say to be suffixed with an "(I think?)" :)

View gist:0e87ffc422b1ca9ea3ebc3f93a7de8ee
/// `*mut T` but non-zero and covariant.
/// This is often the correct thing to use when building data structures using
/// raw pointers, but is ultimately more dangerous to use because of its additional
/// properties. If you're not sure if you should use `Shared<T>`, just use `*mut T`!
/// Unlike `*mut T`, the pointer must always be non-null, even if the pointer
/// is never dereferenced. This is so that enums may use this forbidden value
/// as a discriminant -- `Option<Shared<T>>` has the same size as `Shared<T>`.
/// However the pointer may still dangle if it isn't dereferenced.
View deserialize_webrenderish.s
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $264, %rsp
movq %rdx, -264(%rbp)
extern crate serde_derive;
extern crate serde;
extern crate bincode;
use serde::{Deserialize};
use std::{ptr, io, slice};
View deserialize_from.s
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $224, %rsp
movq %rdx, %rbx
movq %rbx, -144(%rbp)
pxor %xmm0, %xmm0
movdqa %xmm0, -192(%rbp)
View deserialize.s
.loc 16 60 0
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp