Skip to content

Instantly share code, notes, and snippets.

@kirkegaard
kirkegaard / postmessages.html
Last active July 11, 2025 13:19
Send post messages back and forth between windows
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Window 1</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
@kirkegaard
kirkegaard / enable-akai-katana-and-dodonpachi-saidaiojou-in-mame.diff
Last active April 12, 2025 17:11
Enable Akai Katana and DoDonPachi SaiDaiOuJou in mame
diff --git a/src/mame/cave/cv1k.cpp b/src/mame/cave/cv1k.cpp
index c57694f92aa..14865cc0b5b 100644
--- a/src/mame/cave/cv1k.cpp
+++ b/src/mame/cave/cv1k.cpp
@@ -917,32 +917,32 @@ ROM_START( dfkbl )
ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(31f9eb0a) SHA1(322158779e969bb321241065dd49c1167b91ff6c) )
ROM_END
-// ROM_START( akatana )
-// ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF)
const input = await Deno.readTextFile("input.txt");
type Position = { x: number; y: number };
type Direction = "up" | "down" | "left" | "right";
type Guard = {
position: Position;
direction: Direction;
};
@kirkegaard
kirkegaard / aoc_day05.ts
Created December 5, 2024 16:17
advent of code day 5
const input = await Deno.readTextFile("input.txt");
type Rule = {
x: number;
y: number;
};
const [order, pages] = input.split("\n\n");
function parseRules(rules: string): Rule[] {
@kirkegaard
kirkegaard / aoc_day04.ts
Created December 4, 2024 09:33
advent of code day 4
const input = await Deno.readTextFile("input.txt");
const directions = [
[0, 1],
[0, -1],
[1, 0],
[1, 1],
[1, -1],
[-1, 0],
[-1, -1],
@kirkegaard
kirkegaard / aoc_day03.ts
Created December 3, 2024 18:14
advent of code day 3
const input = await Deno.readTextFile("input.txt");
function matchMuls(str: string): string[] {
return str.match(/mul\(\d+,\d+\)/g) || [];
}
function calculateMulSum(arr: string[]): number {
return arr.reduce((acc, str) => {
const [a, b] = str.slice(4, -1).split(",").map(Number);
return acc + a * b;
@kirkegaard
kirkegaard / aoc_day01.ts
Created December 2, 2024 09:28
advent of code day 1
const input = await Deno.readTextFile("input.txt");
const data = input.split("\n");
let left: number[] = [];
let right: number[] = [];
for (const pair of data) {
const [a, b] = pair.split(" ");
left.push(+a);
right.push(+b);
@kirkegaard
kirkegaard / aoc_day02.ts
Created December 2, 2024 09:27
advent of code day 2
const input = await Deno.readTextFile("input.txt");
const data = input.split("\n");
const isSafe = (levels: number[]): boolean => {
const diffs = levels.slice(1).map((num, idx) => num - levels[idx]);
// Stupid off by one error >:(
if (diffs.length === 0) {
return false;
}
@kirkegaard
kirkegaard / parallel-fetch.js
Last active October 23, 2024 22:27
Fetch multiple endpoints in parallel
const fetcher = async (path, options = {}) => {
const response = await fetch(path, options);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
return data;
@kirkegaard
kirkegaard / JobQueue.js
Created October 9, 2024 15:11
JobQueue using pure async/await
// A job queue that takes an anonymous functions and executes them in parallel
let maxConcurrent = 3;
let queue = [];
let activeCount = 0;
// Add task to queue and execute
async function exec(task) {
queue.push(task);
await next();
}