Skip to content

Instantly share code, notes, and snippets.

xenobrain / circles.rb
Last active March 19, 2023 22:13
circles for dragonruby
View circles.rb
module GTK
class Runtime
def draw_circle c
radius = c.radius.to_i || 0
xc = c.x.to_i + (radius << 1)
yc = c.y.to_i + (radius << 1)
t = c.thickness || 1
r = c.r || 0
g = c.g || 0
b = c.b || 0
xenobrain / color.rb
Last active March 18, 2023 13:35
Standard Colors for Ruby
View color.rb
module Color
# Web
ALICEBLUE = { r: 240, g: 248, b: 255 }.freeze
ANTIQUEWHITE = { r: 250, g: 235, b: 215 }.freeze
AQUA = { r: 0, g: 255, b: 255 }.freeze
AQUAMARINE = { r: 127, g: 255, b: 212 }.freeze
AZURE = { r: 240, g: 255, b: 255 }.freeze
BEIGE = { r: 245, g: 245, b: 220 }.freeze
BISQUE = { r: 255, g: 228, b: 196 }.freeze
BLACK = { r: 0, g: 0, b: 0 }.freeze
xenobrain / sat.rb
Last active March 13, 2023 23:13
View sat.rb
# SAT test for arrays of vertices
# * Shapes must be convex
# * Vertices are specified in CCW order
def find_collision_polygon_polygon a, b
k = 0
while k < 2
a_len = a.length
b_len = b.length
amirrajan / winding_number.rb
Created September 24, 2020 18:33
Winding number collision detection in Ruby.
View winding_number.rb
# coding: utf-8
module Geometry
class Points
def initialize array
@array = array
def point_inside? point
return false unless point.inside_rect? rect
winding_number(point) == 0
yogthos /
Last active February 26, 2023 07:43
Clojure beginner resources

Introductory resources

Tenzer /
Last active March 22, 2022 05:19
LastPass Pwned Passwords checker

LastPass Pwned Passwords checker

This is a script for checking if any of the passwords you have stored in LastPass have been exposed through previous data breaches.

To use the script you need to have Python 3 installed and you need a CSV export of your LastPass vault. The export can be generated from the LastPass CLI with:

lpass export > lastpass.csv

or can be extracted with the browser plugin by going to the LastPass icon → More Options → Advanced → Export → LastPass CSV File (note that I did have problems getting this to work).

jlnquere / UICollectionViewScroll.swift
Last active June 10, 2022 14:25
XCUITests: scroll UICollectionView to find one of it's offscreen UICollectionViewCell by id
View UICollectionViewScroll.swift
// Thanks to @MonsieurDart for the idea :)
func scroll(collectionView:XCUIElement, toFindCellWithId identifier:String) -> XCUIElement? {
guard collectionView.elementType == .collectionView else {
fatalError("XCUIElement is not a collectionView.")
var reachedTheEnd = false
var allVisibleElements = [String]()
while !reachedTheEnd {
andymatuschak /
Last active March 19, 2023 18:37
A composable pattern for pure state machines with effects (draft v3)

A composable pattern for pure state machines with effects

State machines are everywhere in interactive systems, but they're rarely defined clearly and explicitly. Given some big blob of code including implicit state machines, which transitions are possible and under what conditions? What effects take place on what transitions?

There are existing design patterns for state machines, but all the patterns I've seen complect side effects with the structure of the state machine itself. Instances of these patterns are difficult to test without mocking, and they end up with more dependencies. Worse, the classic patterns compose poorly: hierarchical state machines are typically not straightforward extensions. The functional programming world has solutions, but they don't transpose neatly enough to be broadly usable in mainstream languages.

Here I present a composable pattern for pure state machiness with effects,

mackuba /
Last active August 6, 2022 17:28
New stuff from WWDC 2015

Here's my own list of the interesting stuff announced during this year's WWDC, collected from the keynotes, various Apple docs, blog posts and tweets.

If you're planning to watch the videos, I really recommend this Mac app that helps you download and watch them:

OS X El Capitan

  • split view - two apps side by side on full screen
mtauraso /
Last active February 10, 2021 04:45
TCC Database Script
# This will add lauchd to the list of allowed processes for accessibility access
sudo sqlite3 /Library/Application\ Support/ "INSERT or REPLACE INTO access VALUES('kTCCServiceAccessibility','/sbin/launchd',1,1,1,NULL)"
# This outputs the rows in the TCC database
sudo sqlite3 /Library/Application\ Support/ 'select * from access'
echo "Restart is required for these changes to take effect"