Skip to content

Instantly share code, notes, and snippets.

@ityonemo
ityonemo / start_peer.exs
Created December 13, 2022 15:34
starts a BEAM peer node
:net_kernel.start([:"main@127.0.0.1"])
:erlang.set_cookie(:cook)
{:ok, peer, peername} =
:peer.start(%{connection: 0, name: :peer, host: ~C'127.0.0.1'})
:peer.call(peer, :erlang, :set_cookie, [:cook])
Node.connect(peername)
# add code paths
:rpc.call(peername, :code, :add_paths, [:code.get_path()])
{
"Elixir debug": {
"prefix": "dd",
"body": "|> dbg",
"description": "injects an elixir dbg statement"
},
}
@ityonemo
ityonemo / make.zig
Created September 4, 2022 15:49
make for zigler 0.9.1
const beam = @import("beam.zig");
const e = @import("erl_nif.zig");
const std = @import("std");
pub fn make(env: beam.env, value: anytype) beam.term {
const T = @TypeOf(value);
if (T == beam.env) return value;
switch (@typeInfo(T)) {
.Array => return make_array(env, value),
.Pointer => return make_pointer(env, value),
@ityonemo
ityonemo / Packed tagged.zig
Created August 12, 2022 18:15
Packed tagged union in zig
const E = enum(u12) {
Int = 0xFFF,
String = 0xFFE,
Pointer = 0xFFD,
}
const P = packed union(?e){
const this = @This();
Int: packed struct {
{
"Inspect": {
"prefix": "ins",
"body": "|> IO.inspect(label: \"$RELATIVE_FILEPATH:#{__ENV__.line}\")",
"description": "Adds a pipeline with a labelled `IO.inspect`",
}
}
@ityonemo
ityonemo / matching.ex
Created August 6, 2022 23:18
matching on attributes
defmodule T do
@foo [%{foo: "bar"}]
def t(@foo) do
:ok
end
end
# DISASSEMBLED RESULT:
@ityonemo
ityonemo / random.ex
Last active August 1, 2022 02:55
a delightfully random elixir module
defmodule(:"7tbgPucj") do
def(fun0(arg0, arg1, arg2)) do
expr0 = fun1(arg0, arg1, arg0, true, arg2, arg0, arg2)
expr1 = fun3(expr0, arg1, arg2, 0.3876953125, expr0, arg2)
expr2 = [arg1, expr1, -0.8984375]
expr3 = [arg0, arg2, false, expr0, <<185, 89>>, -980.70703125, arg0, expr0, arg2]
expr4 = [arg2, expr1, expr0, arg1, false, -9, :ulI]
expr5 = :j
end
@ityonemo
ityonemo / convertible.ex
Last active September 23, 2021 20:35
convertible.ex
defprotocol Convertible do
def convert(a, target_struct)
end
defmodule ConversionBoilerplate do
defmacro __using__() do
quote do
def convert(a, to: struct_module) do
# maybe do some asserts here
module = Module.concat(__MODULE__, struct_module)
@ityonemo
ityonemo / foo.ex
Created September 13, 2021 01:01
protocol thingy
defprotocol Proto do
def generic_getter(value)
end
defmodule A do
defstruct [:a]
def generic_getter(v), do: v.a
defimpl Proto do
defdelegate generic_getter(value), do: A
@ityonemo
ityonemo / dot.zig
Last active August 15, 2021 22:32
generic dot product zig
const std = @import("std");
fn childOf(comptime T: type) type {
return switch (@typeInfo(T)) {
.Vector => |vector| vector.child,
.Array => |array| array.child,
.Pointer => |pointer| {
switch (pointer.size) {
.Slice => {},
.One => {