Skip to content

Instantly share code, notes, and snippets.

View glesica's full-sized avatar

George Lesica glesica

View GitHub Profile
@glesica
glesica / benchmark.py
Created April 15, 2020 17:14
A naive count-min sketch implementation in Python.
import sys
import time
from cmsketch import CMSketch
RECEIVED = 1000000
EVENTS = 1000
if len(sys.argv) != 3:
print("usage: benchmark.py <error> <prob>")
@glesica
glesica / swgo.bash
Created March 27, 2018 02:16
Switch Go (swgo): A very simple and intensely opinionated Go version manager
# Switch Go (swgo)
# A very simple and intensely opinionated Go version manager.
#
# Author: George Lesica <george@lesica.com>
#
# To use, create a file called ".swgo" in any project directory.
# Inside of this file, set two variables: GOROOT_ and GOPATH_
# to the values you want assigned to GOROOT and GOPATH,
# respectively. Then, while in that directory, just run "swgo"
# and your GOROOT, GOPATH, and PATH will be updated accordingly.
@glesica
glesica / bootstrap-sile.sh
Last active March 21, 2017 23:39
Install dependencies for SILE on Ubuntu 16.04
#!/bin/sh
sudo apt-get install libharfbuzz-dev libfreetype6-dev libfontconfig-dev lua5.1 lua-lpeg-dev lua-expat-dev lua-zlib-dev lua-filesystem-dev liblua5.1-0-dev

Keybase proof

I hereby claim:

  • I am glesica on github.
  • I am glesica (https://keybase.io/glesica) on keybase.
  • I have a public key whose fingerprint is 4378 8FCD 8E05 A920 2EA7 71DE E23B F398 FEBF A545

To claim this, I am signing this object:

defmodule Units do
def add({x, :in}, {y, :in}), do: {x + y, :in}
def sub({x, :in}, {y, :in}), do: {x - y, :in}
end
Units.add({5, :in}, {4, :in})
@glesica
glesica / dynamic_pool.go
Created May 20, 2015 04:25
Dynamic pool that allows concurrency for a set of tasks to be throttled.
package main
import "sync"
func main() {
jobChan := make(chan (chan int))
resChan := make(chan int)
squareGroup := new(sync.WaitGroup)
// The workers
@glesica
glesica / ratelimit.ex
Last active August 29, 2015 14:19
GenServer implementation that wraps a function in order to allow calls to be rate limited.
defmodule Auscrape.RateLimit do
use GenServer
use Timex
def start_link(fun, interval, opts \\ []) do
GenServer.start_link(__MODULE__, {fun, interval}, opts)
end
def call_fun(server, args) do
GenServer.call(server, {:call, args}, :infinity)
@glesica
glesica / units.jl
Last active August 29, 2015 14:17
Rudimentary implementation of units of measure in Julia.
import Base.show, Base.convert
abstract Unit
abstract ScalarUnit <: Unit
abstract CompoundUnit <: Unit
abstract LinearUnit <: ScalarUnit
macro defunit(name::Symbol, parent::Symbol)
@glesica
glesica / equality.py
Created March 11, 2015 19:53
Brief exploration of Python's magic methods for equality testing.
# Equality in Python
# When using custom types (classes) many programmers like to be able
# to use built-in concepts like "==" instead of something like
# "a.equals(b)". Generally it is only a good idea to do this if the
# concept you are implementing is conceptually the same as what the
# operator is normally used for. An example:
class Person1(object):
def __init__(self, name, age):
package main
import "sync"
func main() {
jobChan := make(chan int)
resChan := make(chan int)
squareGroup := new(sync.WaitGroup)
// The workers