Skip to content

Instantly share code, notes, and snippets.

View carpodaster's full-sized avatar

Carsten Zimmermann carpodaster

  • Vim
View GitHub Profile
@carpodaster
carpodaster / g810-led_freebsd.patch
Created January 27, 2021 23:36
makefile patch based on https://github.com/MatMoul/g810-led/issues/104 - makes it more FreeBSD'esque; needs OS switching
diff --git a/makefile b/makefile
index 8d6c5d7..2db6c5f 100644
--- a/makefile
+++ b/makefile
@@ -5,8 +5,8 @@ ifeq ($(LIB),libusb)
CPPFLAGS=-Dlibusb
LIBS=-lusb-1.0
else
- CPPFLAGS=-Dhidapi
- LIBS=-lhidapi-hidraw
Ruby version: 2.6.1
Run with: `ruby pirate_combo.rb`
user system total real
nested map, small array 0.009232 0.000084 0.009316 ( 0.009315)
nested map, huge array 27.279118 0.510522 27.789640 ( 27.790889)
flat map, small array 0.002179 0.000043 0.002222 ( 0.002219)
flat map, huge array 12.483256 0.087956 12.571212 ( 12.571798)
Array#product, small array 0.001514 0.000000 0.001514 ( 0.001513)
Array#product, huge array 5.079583 0.000002 5.079585 ( 5.080144)
require 'thread'
WORKERS = 3
queue = SizedQueue.new(WORKERS * 2)
# Backlog some work! Using a separate thread since push operation on
# SizedQueue may block when it's "full"
Thread.new { MyModel.find_in_batches { |batch| queue << batch } }
readio, writeio = IO.pipe
@carpodaster
carpodaster / maybe_date.rb
Created October 25, 2018 10:07
Maybe date monad
# frozen_string_literal: true
require 'minitest/autorun'
require 'date'
class MaybeDate < SimpleDelegator
include Comparable
def initialize(date = nil, default: 9999)
date = begin
@carpodaster
carpodaster / string_split_vs_rpartition.rb
Created October 11, 2018 12:50
Benchmarking String#split and String#rpartition
# frozen_string_literal: true
require 'benchmark'
input = "This::Is::One::Heavily::Nested::Module"
n = 1_000_000
Benchmark.bm do |benchmark|
benchmark.report("String#split") do
@carpodaster
carpodaster / latin1encoding_part1.ex
Created February 10, 2017 10:00
Elixir: Converting Latin1-encoded HTML to UTF-8
defmodule Latin1Convert do
@doc """
Convert an input HTML string to UTF-8 unicode.
"""
@spec call(String.t) :: String.t
def call(html) do
content_type = content_type_from_header(html)
cond do
content_type == :latin1 ->
@carpodaster
carpodaster / downcase_benchmark.rb
Created December 1, 2016 13:40
Benchmarking German non-ascii downcase
require 'benchmark'
string = "HELLO WÖRLD WHÜTS ÄP?"
n = 500_000
# Using String#tr in one fell swoop
tr_single = ->(n, str) { n.times { str.tr('A-ZÄÜÖ', 'a-zäüö') } }
# Chaining outputs of String#tr

Keybase proof

I hereby claim:

  • I am carpodaster on github.
  • I am carpmeister (https://keybase.io/carpmeister) on keybase.
  • I have a public key ASDrqstqUezWWJR9DL24pQkvi4cPxgVRQAj-koCjsUEEtQo

To claim this, I am signing this object:

@carpodaster
carpodaster / Xmodmap
Created June 29, 2015 08:13
Original Xmodmap bindings for F7 to F12
keycode 73 = F7 F7 F7 F7 F7 F7 XF86Switch_VT_7 F7 F7 XF86Switch_VT_7 F7 F7 F7 F7 XF86Switch_VT_7
keycode 74 = F8 F8 F8 F8 F8 F8 XF86Switch_VT_8 F8 F8 XF86Switch_VT_8 F8 F8 F8 F8 XF86Switch_VT_8
keycode 75 = F9 F9 F9 F9 F9 F9 XF86Switch_VT_9 F9 F9 XF86Switch_VT_9 F9 F9 F9 F9 XF86Switch_VT_9
keycode 76 = F10 F10 F10 F10 F10 F10 XF86Switch_VT_10 F10 F10 XF86Switch_VT_10 F10 F10 F10 F10 XF86Switch_VT_10
keycode 95 = F11 F11 F11 F11 F11 F11 XF86Switch_VT_11 F11 F11 XF86Switch_VT_11 F11 F11 F11 F11 XF86Switch_VT_11
keycode 96 = F12 F12 F12 F12 F12 F12 XF86Switch_VT_12 F12 F12 XF86Switch_VT_12 F12 F12 F12 F12 XF86Switch_VT_12
@carpodaster
carpodaster / active_model_lint.rb
Last active August 29, 2015 14:00
ActiveModel::Lint for rspec
# Provides an rspec version https://github.com/rails/rails/blob/master/activemodel/lib/active_model/lint.rb
# Approaches like https://gist.github.com/msgehard/910773 do not seem to work with
# current versions of minitest.
#
# Usage:
# 1. Put file in spec/support
# 2. Add it_behaves_like 'ActiveModel' in your spec file
shared_examples_for 'ActiveModel' do
let(:model) { subject }