Skip to content

Instantly share code, notes, and snippets.

View asaaki's full-sized avatar
🦀
I may be slow to respond. Ping me on Twitter instead: https://twitter.com/asaaki

Christoph Grabo asaaki

🦀
I may be slow to respond. Ping me on Twitter instead: https://twitter.com/asaaki
View GitHub Profile
@asaaki
asaaki / bench-env-vars-in-different-scopes.rb
Last active July 6, 2020 11:14
Ruby: Do ENV vars have a significant impact on the runtime performance?
#!/usr/bin/env ruby
# gem install benchmark-ips
require 'benchmark'
require 'benchmark/ips'
# https://github.com/evanphx/benchmark-ips#custom-suite
class GCSuite
def warming(*); run_gc; end
def running(*); run_gc; end
def warmup_stats(*); end
@asaaki
asaaki / tco.rs
Created June 12, 2020 17:41
TCO #rustlang #recursion
// Recursion: TCO (Tail Call Optimization)
// Computerphile: https://www.youtube.com/watch?v=_JtPhF8MshA
fn fib(n: usize) -> usize {
fib_go(n, 0, 1)
}
fn fib_go(n: usize, a: usize, b: usize) -> usize {
match (n, a, b) {
(0, v, _) => return v,
@asaaki
asaaki / README.md
Last active April 23, 2020 13:44 — forked from twooster/README.md
Create scrolling text gifs for Slack

(Forked fork, that works on macos, too)

Makes little scrolly text jiffs in Flywheel colors.

Prerequisites

  • macos: brew install fontconfig imagemagick gifsicle
  • Linux: sudo apt install fontconfig imagemagick gifsicle

Usage

@asaaki
asaaki / Gemfile
Last active February 25, 2020 13:28
# frozen_string_literal: true
source 'https://rubygems.org'
gem 'puma'
gem 'sinatra'
gem 'sinatra-contrib'
@asaaki
asaaki / ___boolean_env_vars.md
Last active November 7, 2019 19:42
Env Vars as Booleans

Boolean Environment Variables

Don't overcomplicate things.

I've seen a lot of parse the env var and match it against some known values like:

env_var = ENV['FEATURE_ONE']
case env_var.to_s.downcase
when 'true', 't', 'yes', 'y', 'on', '1' then true
@asaaki
asaaki / ruby-sigils.rb
Created May 28, 2019 16:51
ruby-sigils.rb
[*('A'..'Z'), *('a'..'z')].map do |c|
puts [c, eval("%#{c}(ls)")].inspect
rescue Exception
puts "#{c} not allowed"
end; 0
@asaaki
asaaki / experiments.rb
Created May 16, 2019 09:23
Some Ruby stdlib experiments
### Experiments
# https://ruby-doc.org/core-2.5.0/SizedQueue.html
log = SizedQueue.new(100)
# https://ruby-doc.org/core-2.5.0/Queue.html
queue = Queue.new
# https://ruby-doc.org/core-2.5.0/ThreadGroup.html
group = ThreadGroup.new # pool
5.times do |i|
# https://ruby-doc.org/core-2.5.0/Thread.html
@asaaki
asaaki / flurlicht.ino
Created January 30, 2019 09:30
motion sensor / interrupt triggered neopixel light controller
#include <Adafruit_NeoPixel.h>
#include <avr/power.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#define STRIP_PIN 6
#define TRIGGER_PIN 2
#define CONTROL_LED 13
// Note: this duration should be also longer than the HIGH time of the PIR
@asaaki
asaaki / rustup-targets.sh
Created October 22, 2018 14:44
(rustup) add or remove list of targets for a list of toolchains
#!/bin/sh
targets=(armv7-unknown-linux-musleabihf thumbv7em-none-eabi armv7-unknown-linux-musleabihf)
toolchains=(stable beta nightly)
for toolchain in $toolchains; do
for target in $targets; do
echo "--> toolchain $toolchain and target $target"
rustup target install $target --toolchain $toolchain
# rustup target remove $target --toolchain $toolchain
@asaaki
asaaki / callables_spec.rb
Created March 2, 2018 09:44
callables in specs
require 'spec_helper'
module CallableSubject
def callable_subject(&_block)
subject { -> { yield } }
end
end
RSpec.configure do |c|
c.extend(CallableSubject)