Skip to content

Instantly share code, notes, and snippets.

@ityonemo
ityonemo / start_peer.exs
Created Dec 13, 2022
starts a BEAM peer node
View start_peer.exs
: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()])
View gist:9e5c54aeb141464683fb95fd7f54f283
{
"Elixir debug": {
"prefix": "dd",
"body": "|> dbg",
"description": "injects an elixir dbg statement"
},
}
@ityonemo
ityonemo / make.zig
Created Sep 4, 2022
make for zigler 0.9.1
View make.zig
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 Aug 12, 2022
Packed tagged union in zig
View Packed tagged.zig
const E = enum(u12) {
Int = 0xFFF,
String = 0xFFE,
Pointer = 0xFFD,
}
const P = packed union(?e){
const this = @This();
Int: packed struct {
View gist:2fc63b47263ba9bca576b0905b049673
{
"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 Aug 6, 2022
matching on attributes
View matching.ex
defmodule T do
@foo [%{foo: "bar"}]
def t(@foo) do
:ok
end
end
# DISASSEMBLED RESULT:
@ityonemo
ityonemo / random.ex
Last active Aug 1, 2022
a delightfully random elixir module
View random.ex
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 Sep 23, 2021
convertible.ex
View 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 Sep 13, 2021
protocol thingy
View foo.ex
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 Aug 15, 2021
generic dot product zig
View dot.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 => {