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) ->
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}
garazdawi / bit_vector.erl
Last active Aug 24, 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) ->
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 /
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 ..
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 gist:1875718
## Initial assembly
lbl_sum0: i_func_info_IaaI 0 sum sum 2
i_is_eq_exact_immed_frc f(lbl_sum1) x(0) 0
move_return_xr x(1) x(0)
lbl_sum1: is_tuple_of_arity_fxA f(lbl_sum0) x(1) 2
extract_next_element2_x x(2)
i_is_eq_exact_immed_fxc f(lbl_sum0) x(2) s
i_fetch_rc x(0) 1
i_minus_jId j(0000000000000000) 4 x(1)
i_fetch_xr x(3) x(0)
View gist:1037856
get_data([T|Rest]) ->
case T of
test ->
_Else ->
> 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,
You can’t perform that action at this time.