Skip to content

Instantly share code, notes, and snippets.

View KonnorRogers's full-sized avatar

Konnor Rogers KonnorRogers

View GitHub Profile
@KonnorRogers
KonnorRogers / main.rb
Created August 16, 2026 03:45
Things that trigger `codegen error: too big operand`
# > 256 locals.
def tick(args)
# This is the most common. Easiest way around it is to split up locals into separate methods as the 256 limit is per "block"
l_0 = nil; l_1 = nil; l_2 = nil;
end
# > 256 globals.
$var1 = nil
$var2 = nil
@KonnorRogers
KonnorRogers / file_watcher.rb
Created August 3, 2026 02:14
File watching (polling) in DragonRuby
class FileWatcher
# This can get potentially deep if you have a lot of files or directories. Consider a fiber if its taking up too much time.
def self.list_files_recursive(directory, max_iterations_for_fiber: 100, fiber: false)
idx = 0
files = []
all_files = []
# Seed with full paths so we never lose directory context. `.reverse_each` makes `.pop()` yield entries in listing order. This is like the old "list_files_recursive" which actually used recursion, but by using a loop we can yield to a fiber on potentially large directories.
DR.list_files(directory).reverse_each do |f|
files << File.join(directory, f)
@KonnorRogers
KonnorRogers / main.rb
Last active July 6, 2026 21:20
rotating mask
module Main
def tick args
# ./samples/07_advanced_rendering/12_blend_modes_additive_modulo/app/main.rb
# Sample app shows how to use blend modes to create a masking layer
# Special thanks to akzidenz@discord (https://akzidenz.itch.io/) for providing this sample app
#
# blendmode reference:
# 1: alpha blending (default)
# 2: additive blending
# 4: modulo blending
@KonnorRogers
KonnorRogers / index.html
Last active July 6, 2026 02:18
downflow
<div flow-controller="counter">
<button flow-action="click->counter#decrement">-</button>
<span flow-text="context.count">0</span>
<button flow-action="click->counter#increment">+</button>
</div>
<button flow-action="#decrement">-</button>
<span flow-text="context.count">0</span>
<button flow-action="#increment">+</button>
@KonnorRogers
KonnorRogers / button.astro
Created June 18, 2026 14:59
Astro button
---
import Button from "@awesome.me/webawesome/dist/components/button/button.js";
---
<Button>Hi</Button>
<script>
import "@awesome.me/webawesome/dist/components/button/button.js";
</script>
@KonnorRogers
KonnorRogers / glow.rb
Created June 11, 2026 05:02
glow outline blendmode dragonruby
# one-time setup
@glow_dirs ||= 16.times.map do |i|
a = i * Math::PI * 2 / 16
[Math.cos(a), Math.sin(a)]
end
@glow_mask_blend ||= Numeric.compose_blendmode(
BLENDFACTOR_ZERO, BLENDFACTOR_SRC_ALPHA, BLENDOPERATION_ADD,
BLENDFACTOR_ZERO, BLENDFACTOR_SRC_ALPHA, BLENDOPERATION_ADD
)
@glow_hole_punch ||= Numeric.compose_blendmode(
@KonnorRogers
KonnorRogers / main.rb
Created May 30, 2026 22:25
Amir's quiz to remind me i have no idea how delta time works.
def calc_car dt = 1
target_speed = if state.engine == :high
state.high_speed
else
state.low_speed
end
state.speed *= (0.98 * dt) if steering_at_limit?
if auto_break?
@KonnorRogers
KonnorRogers / app.rb
Created April 21, 2026 02:03
simple-conveyor
class Game
attr_gtk # attr_gtk class macro
SPRITES = {
conveyor_belt: {
source_x: 0,
source_w: 16,
source_h: 16,
source_y: 0,
animations: {
@KonnorRogers
KonnorRogers / boolify.js
Created April 1, 2026 20:15
Fix all your environment variable woes
function boolify (str) {
const truthy = [
"y",
"yes",
"1",
"true",
"on"
]
if (str && truthy.includes(str.toLowerCase())) {
@KonnorRogers
KonnorRogers / icon-proposal.md
Last active February 18, 2026 16:45
revamping `<wa-icon>`

Proposal for revamping icons

Current API:

function getIconUrl(name: string, family: string, variant: string) {}

// base "resolver"
{