Skip to content

Instantly share code, notes, and snippets.

@JLarky
JLarky / README.md
Last active December 21, 2023 07:15
This code doesn't work in Deno and Bun ;(
- output
bun image
deno image
node image
@JLarky
JLarky / paseto_test.mjs
Created December 21, 2023 07:10
This code doesn't work in Deno and
import { V3 } from "paseto"; // or "npm:paseto";
const key = await V3.generateKey("local", { format: "paserk" });
console.assert(key.length === 52);
console.log(key);
const obj = await V3.encrypt({ sub: "johndoe" }, key);
console.log(obj);
@JLarky
JLarky / STUFF.md
Last active December 18, 2023 16:06
Living dangerously (or safely) with HTMX

I created this demo :)

The main point is that it allows you to compare two apps, one is in React, one in HTMX. Then I introduce this concept of "hey, what if I wanted to store data in HTML or markdown or whatever instead of just text, how would I do that in HTMX? The main idea is that modern backend frameworks (in this case Astro) allow you to work with HTML pretty safely, but you still have to be careful with HTMX specifically because data- attributes are executable in HTMX 🫠, but I have an example how to workaround it as well :)

here are the shadow banned tweets :)

@JLarky
JLarky / 00_README.md
Last active December 1, 2023 02:14
useChildFormStatus

Why is useFormStatus always returning pending false?

So you are trying out that new fangled useFormStatus hook but it doesn't actually react to the status of your form?

Now you tried to Google it and all you get is RTFM "go read docs again". Because hook useFormStatus shows you the status of parent form, not a sibling one.

Let's explain that in English.

  • <form><Spinner></form> works
  • `` doesn't
@JLarky
JLarky / out.txt
Created September 15, 2023 15:44
RSC suspense
delay 2004
delay 1003
delay2 1002
delay 1001
@JLarky
JLarky / what.md
Created September 14, 2023 01:05
Bun: Warning: Each child in a list should have a unique "key" prop.

so we have tes.jsx:

export default function SearchField() {
  return (
    <form>
      <label>1</label>
      <input id="sidebar-search-input" />
    </form>
  );
@JLarky
JLarky / Next.md
Created September 3, 2023 01:02
Initializing Next.js project with different package managers

Comparing install speed with cached deps

image

lower is better

Data

NPM

@JLarky
JLarky / 0_README.md
Last active August 10, 2023 05:37
Does gzip help with hydration data in SSR? https://twitter.com/JLarky/status/1688337744752525312
-rw-r--r--  1 jlarky  wheel  22137 Aug  6 17:44 index.html.gz
-rw-r--r--  1 jlarky  wheel  19815 Aug  6 17:45 rest.html.gz
-rw-r--r--  1 jlarky  wheel   2347 Aug  6 17:46 script.html.gz

So

19815+2347 = 22162 vs

<div title="hi">
<Suspense>
<ClientComponent prop={await 123}>
</Suspense>
</div>
<ClientRoot url="/" />
next 12: send from server to client: ["client.js", {url: '/'}]
^^
@JLarky
JLarky / IsolateCSS.tsx
Last active July 10, 2023 09:23
How to use shadow dom to isolate CSS of React component https://twitter.com/JLarky/status/1657989891526123520
export function IsolateCSS(props: { children: React.ReactNode }) {
const onceRef = useRef(false);
const [shadowRoot, setShadowRoot] = useState<ShadowRoot>();
const ref = useCallback((ref: HTMLDivElement | null) => {
if (ref && onceRef.current === false) {
onceRef.current = true;
setShadowRoot(ref.attachShadow({ mode: 'open' }));
}
}, []);