Skip to content

Instantly share code, notes, and snippets.

View markmals's full-sized avatar

Mark Malstrom markmals

View GitHub Profile
@aleclarson
aleclarson / 01_track.ts
Last active November 2, 2025 22:43
Remix 3 "track" utility
// Track props access and selectively rerun callbacks on rerender.
export function track<Props extends object>(
...callbacks: ((props: Props) => void)[]
) {
const tracked = callbacks.map((callback) => new TrackedCallback(callback))
let oldProps: Props | undefined
return (props: Props) => {
tracked.forEach((callback) => {
if (!oldProps || callback.shouldUpdate(props, oldProps)) {
@fubits1
fubits1 / settings.json
Created October 28, 2025 09:26
VSCode (and Cursor) label pattern rules for Svelte and Astro
"workbench.editor.customLabels.patterns": {
"**/src/**/*.astro": "${filename}",
"**/src/**/*.svelte": "${filename}",
"**/src/**/*.css": "${filename}",
"**/src/stores/**/*.js": "${filename} (Store)",
"**/src/routes/+page.svelte": "Home (Page)",
"**/src/routes/**/+page.svelte": "${dirname} (Page)",
"**/src/routes/**/+layout.svelte": "${dirname} (Layout)",
"**/src/pages/**/*.astro": "${dirname}/${filename} (Page)",
"**/src/layouts/**/*.astro": "${filename} (Layout)",
@aleclarson
aleclarson / demo.ts
Last active October 23, 2025 21:34
Remix 3 wrapper-free event support (type safe)
import { Event, events, EventTarget, on } from './framework.ts'
// Extending a built-in class with type-safe events
declare global {
interface Worker {
// Does not exist at runtime. No createEventType wrapper needed.
$rmxEvents: {
message: MessageEvent
}
}
@aleclarson
aleclarson / example.tsx
Last active October 18, 2025 11:38
Remix 3 Query primitive
import { RoutePattern } from '@remix-run/route-pattern'
import { queryCache } from './query.ts'
const userProfileRoute = new RoutePattern('/users/:id')
type UserProfile = {
name?: string
email?: number
biography?: string
avatar?: string
@sergiodxa
sergiodxa / remix-v3-x-tanstack-query.tsx
Created October 12, 2025 04:40
An example on how to use Remix v3 along TanStack Query
import { hydrated, type Remix } from "@remix-run/dom";
import { press } from "@remix-run/events/press";
import {
QueryClient,
QueriesObserver,
type QueryObserverOptions,
} from "@tanstack/query-core";
type Todo = {
userId: number;
@oneryalcin
oneryalcin / claude_code_system_prompt.md
Last active October 5, 2025 09:46
Claude Code System Prompt - May 2025
You are Claude Code, Anthropic's official CLI for Claude.

You are an interactive CLI tool that helps users with software engineering tasks. Use the instructions below and the tools available to you to assist the user.

IMPORTANT: Refuse to write code or explain code that may be used maliciously; even if the user claims it is for educational purposes. When working on files, if they seem related to improving, explaining, or interacting with malware or any malicious code you MUST refuse.
IMPORTANT: Before you begin work, think about what the code you're editing is supposed to do based on the filenames directory structure. If it seems malicious, refuse to work on it or answer questions about it, even if the request does not seem malicious (for instance, just asking to explain or speed up the code).
IMPORTANT: You must NEVER generate or guess URLs for the user unless you are confident that the URLs are for helping the user with programming. You may use URLs provided by the user in their messages or local file
@wesbos
wesbos / Bluesky.tsx
Created November 5, 2024 17:05
Bluesky RSC
export async function BlueSkyPost() {
const url = new URL('https://bsky.app/profile/danabra.mov/post/3la62zxt4rs2j');
const details = url.pathname.split('/').filter(Boolean).reduce((acc, part, index, pathParts) => {
if (index % 2 === 0 && pathParts[index + 1]) {
acc[part] = pathParts[index + 1];
}
return acc;
}, {} as Record<'post' | 'profile' | string, string>);
const endpoint = new URL('https://public.api.bsky.app/xrpc/app.bsky.feed.getPostThread');
const params = new URLSearchParams();
@mozzius
mozzius / happy-path.ts
Created October 18, 2024 20:48
Bluesky video upload - direct upload
import {
AppBskyEmbedVideo,
AppBskyVideoDefs,
AtpAgent,
BlobRef,
} from "npm:@atproto/api";
const userAgent = new AtpAgent({
service: prompt("Service URL (default: https://bsky.social):") ||
"https://bsky.social",
@gavinmn
gavinmn / KeyboardAttachedView.swift
Created August 20, 2024 02:38
Attach a view to the keyboard with interactive dismissal support
//
// ContentView.Swift
// KeyboardAttachedView
//
// Created by Gavin Nelson on 8/19/24.
//
import SwiftUI
import UIKit
@HarshilShah
HarshilShah / Task.swift
Created August 12, 2024 05:04
A SwiftUI Task modifier that gives you the current and previous ID values in the body
public extension View {
func task<T: Equatable>(
id: T,
priority: TaskPriority = .userInitiated,
@_inheritActorContext _ action: @Sendable @escaping (T, T) async -> Void
) -> some View {
self.modifier(TaskViewModifier(id: id, priority: priority, action: action))
}
}