Skip to content

Instantly share code, notes, and snippets.

Lukas Larsson garazdawi

Block or report user

Report or block garazdawi

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
garazdawi / gcount.erl
Created Sep 6, 2019
Global Counters in Erlang
View gcount.erl
ets_init() ->
ets:new(?MODULE, [{write_concurrency,true},named_table,public]).
ets_new(Counter) ->
garazdawi / bit_vector.erl
Last active Dec 11, 2019
A shared mutable bit-vector in Erlang
View bit_vector.erl
-export([new/1, get/2, set/2, clear/2, flip/2, print/1]).
new(Size) ->
Words = (Size + 63) div 64,
{?MODULE, Size, atomics:new(Words, [{signed, false}])}.
get({?MODULE, _Size, Aref}, Bix) ->
garazdawi /
Created May 10, 2019
How to compile openssl and Erlang/OTP with TLSv1.3
git clone
cd openssl
git checkout OpenSSL_1_1_1b
./Configure shared --prefix=$HOME/apps/openssl/1.1.1b --openssldir=$HOME/apps/openssl/1.1.1b linux-x86_64
make install
cd ..
View gen_tcp2.erl
-export([listen/2, accept/1, accept/2,
connect/3, connect/4,
send/2, recv/1, recv/2, recv/3,
-export([run/0, run/2]).
%% Naive gen_tcp shim over the socket API
garazdawi / decode.erl
Created Aug 3, 2018
Decode of partial erlang external term format
View decode.erl
term(<<131,Rest/binary>>) ->
%% List
term(<<108,Sz:32,Rest/binary>>) ->
{Lst, R} = lists:foldl(
fun(_, {Acc, B}) ->
garazdawi / trace_issue.escript
Created Aug 1, 2018 — forked from devonestes/trace_issue.escript
Reproduction escript for trace/3 wierdness
View trace_issue.escript
#!/usr/bin/env escript
%% -*- erlang -*-
%%! -smp enable -sname wtf
main(_) ->
process_flag(trap_exit, true),
ToMap = lists:seq(1, 50),
MapFun = fun() ->
lists:map(fun(N) -> N end, ToMap)
View funmatch.erl
%% Introducing the new `apply` pattern match operand.
%% `apply` is used to delegate the handling of a match
%% to some other function including the action to be taken
%% when a successful match happens. The `apply` statement
%% replaces the "-> body" part of a function/case/receive.
%% Simple example:
%% example() ->
%% Pat = fun(A) when is_atom(A) ->
%% {ok, A}
> infocmp xterm
# Reconstructed via infocmp from file: /lib/terminfo/x/xterm
xterm|xterm-debian|X11 terminal emulator,
am, bce, km, mc5i, mir, msgr, npc, xenl,
colors#8, cols#80, it#8, lines#24, pairs#64,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=^M,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
View lists.erl
keyfind(Key,Value,[H|T]) ->
case maps:find(Key,H) of
{ok, Value} ->
_ ->
keyfind(_,_,[]) ->
View lists.erl
nmap(F,List) ->
nmap(F,Ar,List) ->
{Hd,Tl} = lists:split(Ar,List),
nmap(_F,_,[]) ->
You can’t perform that action at this time.