Skip to content

Instantly share code, notes, and snippets.

View cliffordfajardo's full-sized avatar
🏠
Working from home

Clifford Fajardo cliffordfajardo

🏠
Working from home
  • Bay Area, California
View GitHub Profile
@cliffordfajardo
cliffordfajardo / stop-using-jwts.md
Created August 17, 2026 18:26 — forked from samsch/stop-using-jwts.md
Stop using JWTs

Stop using JWTs!

TLDR: JWTs should not be used for keeping your user logged in. They are not designed for this purpose, they are not secure, and there is a much better tool which is designed for it: regular cookie sessions.

If you've got a bit of time to watch a presentation on it, I highly recommend this talk: https://www.youtube.com/watch?v=pYeekwv3vC4 (Note that other topics are largely skimmed over, such as CSRF protection. You should learn about other topics from other sources. Also note that "valid" usecases for JWTs at the end of the video can also be easily handled by other, better, and more secure tools. Specifically, PASETO.)

A related topic: Don't use localStorage (or sessionStorage) for authentication credentials, including JWT tokens: https://www.rdegges.com/2018/please-stop-using-local-storage/

The reason to avoid JWTs comes down to a couple different points:

  • The JWT specification is specifically designed only for very short-live tokens (~5 minute or less). Sessions
@cliffordfajardo
cliffordfajardo / agentos-blueprint.md
Created August 14, 2026 22:42 — forked from iannuttall/agentos-blueprint.md
AgentOS blueprint — reconstructed from Danny Postma's Agent SDK talk so an agent can build the system

AgentOS — Product Spec & Implementation Blueprint

based off this tweet

Reconstructed from Danny Postma's talk How I Built My Own AgentOS on Claude's Agent SDK (So You Can Too) (2026). This document is both a product spec for a human and an implementation prompt for an AI coding agent. Build exactly this system. Do not invent features that are not specified here.

Role contracts and prompts in this file are reconstructed from the talk, not his verbatim files. Mark every reconstructed prompt in code comments and docs as such.


1. Goal and non-goals

@cliffordfajardo
cliffordfajardo / SKILL.md
Created July 15, 2026 00:48 — forked from tandpfun/SKILL.md
Extract Clothing Skill
name extract-clothing-cutouts
description Extract high-quality, deduplicated transparent ecommerce clothing cutouts from a folder of photographs where people wear one or more garments. Use when Codex must find outfit or model photos, identify unique clothing across images, create focused references, reconstruct complete garments with Imagegen, remove a solid chroma background into RGBA PNGs, and output only the finished clothing images into a new folder under the current working directory.

Extract Clothing Cutouts

Turn photographs of worn clothing into source-faithful standalone catalog PNGs. Treat each result as a reconstruction from visible evidence, not literal segmentation whenever the wearer or another layer occludes part of the garment.

Start by asking for two paths

# create the expo react native app
bunx create-expo-app {NAME_OF_APP}
cd {NAME_OF_APP}
bun run reset-project
# start adding skills
#----------------------------------
# expo skills
bunx skills add expo/skills
@cliffordfajardo
cliffordfajardo / normcore-llm.md
Created August 25, 2023 15:41 — forked from veekaybee/normcore-llm.md
Normcore LLM Reads
@cliffordfajardo
cliffordfajardo / fetch-server.d.ts
Created August 23, 2023 18:29 — forked from jacob-ebey/fetch-server.d.ts
Node Fetch Server
import type { Server } from "node:http";
export type Handler = (request: Request) => Response | Promise<Response>;
export type CreateServerOptions = {
onError?: (error: unknown) => void;
};
export declare function createServer(
handler: Handler,
@cliffordfajardo
cliffordfajardo / github-proxy-client.js
Created March 18, 2022 20:59 — forked from DavidWells/github-proxy-client.js
Full Github REST api in 34 lines of code
/* Ultra lightweight Github REST Client */
// original inspiration via https://gist.github.com/v1vendi/75d5e5dad7a2d1ef3fcb48234e4528cb
const token = 'github-token-here'
const githubClient = generateAPI('https://api.github.com', {
headers: {
'User-Agent': 'xyz',
'Authorization': `bearer ${token}`
}
})
@cliffordfajardo
cliffordfajardo / css_grid_draggable.html
Created March 11, 2022 15:20 — forked from ismasan/css_grid_draggable.html
Example for reordering CSS grids layout
<html>
<head>
<title>grid</title>
<style>
body {padding: 0; margin: 0;}
.container {
display: grid;
grid-template-rows: 200px repeat(4, 100px);
grid-template-columns: repeat(4, 1fr);
grid-template-areas: "header header header header"

Remix request cheatsheet

Navigates? declarative? Makes GET, triggers loader Makes POST, triggers action No requests
navigates declarative <Link to="">
<Form method="get">
<Form method="post"> <Link to="#...">
navigates imperative navigate()
setSearchParams()
submit() navigate("#")
stays declarative <fetcher.Form method="get"> <fetcher.Form method="post"> (doesn't make sense)
stays imperative fetcher.load() fetcher.submit() (doesn't make sense)

where

@cliffordfajardo
cliffordfajardo / typescript-migration.md
Last active December 5, 2022 15:15
typescript migration

Credits to Mike North Sr.Staff Engineer from LinkedIn’s UI Infra team for the inspiration for the stuff below 🙏

What not to do

  • functional changes at the same time
  • attempt this with low test coverage
  • publish your types for consumers while they’re in a weak state

Compiling in lose mode:

  • allow implicit any in your tsconfig # TODO show a breif code snippet example of value to change in tsconfig.
  • start with tests passing