Skip to content

Instantly share code, notes, and snippets.

View erikras's full-sized avatar

Erik Rasmussen erikras

View GitHub Profile
@erikras
erikras / audio.mp3
Created January 22, 2025 11:32
Ting!
begin 644 audio.mp3
M__O0Q``#JJVD]D[K!\Y>M1Z![NAQ``&S6)D#9Y5C+(/S1=NSB>-3=U33-<HS
M)4;Q*D:E6#5APD`4#&N6`@B8T`;:$8Q2?J\9029,.8$2"BX,+&B+(.F%!F("
M&&#&&#&0/&J9&R9&L4&B0&@+&A*@+;YK[13C2<B8!;@%7?1">K$`#&@P&0F(
M7`-*S:T'/?MVY_)2AIIB,#@/:AFJ\NHGPA/+UK!IUI5F,XD-XRSZG*["]X<,
M+$#"02[[X+H2/#$"$8<.@Q_.5N_()A'@M(``%T'I@]K#]%["UC20*4!+:TWD
M_3-<E+_R-E#7$>$%(>=AKCUO/#BTU-P2<^4!2"SB`R"9$M`N`7P<Z,5$)@.`
MK.80EQRRX*A"5\``20#;@11,0N6F`A(4L66E?80%EVU3I`.<8J`\`)>`OK8:
MC![$X(C,#JV-)1_:VL>$-P148"8UFU(<.FJOY#DHC$8C$8C$LC=/F'AX>```
M``*F`^`L84*"IH)`5FO,#6?F%@<@T(8P%<-;D9YGL8QGF-2^:8QV8.-X92'6
@erikras
erikras / hide-whitespace.js
Created December 31, 2024 10:27
Code to modify github's "Files changed" tab to "hide whitespace"
setTimeout(() => {
const tabs = [...document.querySelectorAll(".tabnav-tab.flex-shrink-0")]
const filesTab = tabs.find((element) => /.+\/files$/.test(element.href))
if (!filesTab) {
return
}
const filesURL = new URL(filesTab.href)
filesURL.searchParams.set("w", "1")
filesTab.href = filesURL.toString()
}, 500)
@erikras
erikras / sitcom.md
Created February 13, 2023 08:28
Code Roommates (ChatGPT)

Prompt

Write a sit-com pilot where a React developer, a Vue developer, and a Svelte developer live together in tiny Parisian apartment.

Result

Title: Code Roommates

Scene: A tiny Parisian apartment with three developers - Pierre (React), Jacques (Vue), and Marcel (Svelte) - sharing the space. They are all sitting on the couch, surrounded by computers and other tech gear.

@erikras
erikras / reactHooksMachine.js
Created June 24, 2022 06:04
React Hooks Lifecycle as modeled by XState
import { assign, createMachine } from 'xstate'
export default /** @xstate-layout N4IgpgJg5mDOIC5QCUwEMDGAXABAYQHsBbABwIDsxzdBkAhwAkCCBrWHAMQBsCB3AOgCyBAK7VIfVOQhgATpADEABRkESbPAAs05GIlBlYASyyGKekAA9EAWgAsAdgAMfewGYAnK9e3XARgBs7v6OrgA0IACeNvYATPZ8tgAcMX7BjgH+9r4AvtnhqJi4hKQUVLQMTKwc3PxColjiktJyEPIAylhoDfhaOmDmBsam5OZWCHb+iXzuvgCsvr6J7rY+7u724VHj-r7u0zGJib5uwa7+B7n56Nj4xGSU1Dh0jCxsXLyCImIQElTNCoQxBYir1dEgQIMTGZwWM7PYpnEVolzjFbLNXEdNjZ5lMfPYso5-LZHGtZjFLiACjdivcyk8Kq9qh86t95ABVchEL5YAYEIxQkYwxD2WZ8SaxWKuRwxYJJXxY7Zk6azFU7HZJFX2XJ5EDkAjSeDgqlFO6lR7PSpvGqfeqNP6ySC8-nDUY2A6uaZHEW+Ry+1zo1wbSLRGIxBIHI7pUNrGUU423EoPcovKrvWrcx3gyEuoXjWbSviIpIotEY+XB8aJeYJZKpX0ZLJx64mxN0i2MtN8Dlc20QJ1DaGgMa2fx8ZFSvy+Ym+QOzWwK6yzI58RxkxyJJKuGJT3ZNwoJ2nmhmpmr9gWuvMywv2JEl9GYivWIK+GspUMi-xz-za7JAA */
createMachine(
{
description: 'made by @erikras',
initial: 'Mounted',
context: {
props: {},
state: {},
import { createMachine } from 'xstate'
export default /** @xstate-layout N4IgpgJg5mDOIC5QCUwEMDGAXABAYQHsBbABwIDsxysA6AWQIFdrIBiAVXKKesVDNgBLLIIp8QAD0QBaAIwAGAGw0ALAE4AHPICsigMxrFi+RqMAaEAE8ZAJhsaaAdm0qVsmyb12bamwF8-C1RMXEJSCipaBmYsNgA5MAB3HAAFACcCEngkEAFhUXJxKQRpNxsaeVk9FUc1Xz09DTttC2sS-WUG9wbtbUdXWUcAoPRsfGIySmp6HliIVgBlMFwFrDRY8TyRMRzi2SqaRTVHE3t+tS7HVplFDxofBUUVDQ1ZC5tZYZBgsbDJyJmMTYADECGkMGAcOwSBB1mBNgQhNtCrsZAp5DRZC4zvI9I4DPtriVtC8aGoVDZtLImoZHI4ngFAiByAQIHBxD9QhMItNoiwIDRUOQ2WlIAikQUijJapj8U19iSVLpZCoidI9L0KvJ5EqdQTNEovpzxuEplFZmKcltJaiSio9MpKtVavVGs01S8MV07I4fJoLiojaMuaaAZxuECIOL8jtQHs8WT5fI7KY3eYrLYsU4XColIZFNofP4mca-jysNHkVK7cYKlUanUbA0mpS1XUvXp3DZatVc7JFIy-EA */
createMachine({
description: 'made by @erikras',
initial: 'Mounted',
states: {
Mounted: {
entry: [
'constructor',
@erikras
erikras / typescript-id-trick.ts
Created November 11, 2021 11:49
TypeScript trick to use the id type off of an object.
function selectTask(taskId: string) {
// This is okay, but it might require refactoring if the taskId type ever changes
}
function selectTask(taskId: Task['id']) {
// Much better. We don't care what type the taskId is.
}
@erikras
erikras / machine.js
Last active May 11, 2021 14:28
Generated by XState Viz: https://xstate.js.org/viz
// Available variables:
// - Machine
// - interpret
// - assign
// - send
// - sendParent
// - spawn
// - raise
// - actions

ReScript

type event = Increment | Decrement

export type transition = (. event) => unit

export createTestMachine = (. transition: transition) => {
  // Return a function that calls the transition (contrived, I know)
  let doTransition = (event:event) => transition(. event)
@erikras
erikras / machine.js
Created April 22, 2021 13:05
Generated by XState Viz: https://xstate.js.org/viz
const memeMachine = Machine({
id: 'meme',
initial: 'stateMachines',
states: {
stateMachines: {
on: {
NO_IDEA_WHAT_THEY_ARE: 'stateMachines',
OMG_THEYRE_EVERYWHERE: 'howDoesThisMemeWork'
}
},
@erikras
erikras / machine.js
Last active January 23, 2021 08:48
Generated by XState Viz: https://xstate.js.org/viz
const jobsMachine = Machine({
id: 'jobs',
initial: 'loading',
context: {},
states: {
loading: {
invoke: {
id: 'loadJobs',
onDone: { target: 'idle', actions: 'writeDataToContext' },
},