- Home
- Posts
Posts
All the articles I've posted.
Casbin RBAC is not if admin. It is (user, object, action)
How we wired Casbin into an internal IT helpdesk. The model only defines grammar, policies live in Postgres, handlers enforce capabilities, SQL limits rows, and the UI only hides entry points.
iOS push is not one kind of notification: from alerts to communication notifications, image attachments, and Live Activities
From APNs accepting a request, through a Notification Service Extension rewriting content, to iOS deciding how it appears. Alert, silent push, image attachment, communication notification, in-notification reply, time-sensitive, and Live Activity — the mechanisms and when to use them.
Dual Range Slider: Crossing sides is really just recomputing roles each frame
A walk through the dual-range slider on this site. The finger drags one scalar; the other end freezes as an anchor. lower / upper are not handle identities — they are roles assigned every frame.
VAPKit: Transparent gift animations are two samples from the same frame
A walk through the VAPKit source. H.264 cannot carry Alpha, so VAP paints grayscale transparency into the same image. The player reads vapc, decodes with AVAssetReader, and composites rgbFrame / aFrame in Metal.
NestedPaging: Nested scrolling on a profile page is really just locking contentOffset
A walk through the NestedPaging source. The outer table and child lists both recognize the same vertical gesture; who actually scrolls is decided by offset locking. Header visibility is the only source of truth.