Skip to content

Instantly share code, notes, and snippets.

View n-at-han-k's full-sized avatar
🚀

Nathan Kidd n-at-han-k

🚀
View GitHub Profile

Hey

The journey from the first simple bots to superhuman AI like Libratus and Pluribus is a fascinating 27-year story of academic rivalries, commercial scandals, and massive algorithmic breakthroughs. It's a perfect case study in AI for imperfect information games.

I've written up a little history, from the first academic attempts in 1998 to the modern "GTO Solvers." Grab a coffee, this is a long one.


The History of Online Poker Bots: From Loki's Rules to CFR's Divinity

@n-at-han-k
n-at-han-k / main.rb
Created November 13, 2025 04:31 — forked from takahashim/main.rb
require 'rubycocoa'
##### begin from drb/invokemethod.rb
module DRb
class DRbServer
module InvokeMethod18Mixin
def block_yield(x)
if x.size == 1 && x[0].class == Array
x[0] = DRbArray.new(x[0])
end
require 'deferrable_gratification'
class Promise
def initialize
@df = EM::DefaultDeferrable.new
DG.enhance! EM::DefaultDeferrable
end
def done(&block)
tap { @df.callback(&block) }
@n-at-han-k
n-at-han-k / rakefile_extract_fixtures.rb
Created November 15, 2025 15:54 — forked from deepak/rakefile_extract_fixtures.rb
generate fixtures from actual data in database
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require(File.join(File.dirname(__FILE__), 'config', 'boot'))
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/rails'