Skip to content

Instantly share code, notes, and snippets.

View thebirk's full-sized avatar

Aleksander Birkeland thebirk

View GitHub Profile
read_tar :: proc(reader: ^io.Reader) {
Posix_Ustar_Header :: struct #packed {
name: [100]u8,
mode: [8]u8,
uid: [8]u8,
gid: [8]u8,
size: [12]u8,
mtime: [12]u8,
checksum: [8]u8,
typeflag: u8,
read_zip :: proc(reader: ^io.Reader) {
LOCAL_FILE_MAGIC :: 0x04034B50;
END_MAGIC :: 0x06054b50;
Local_File_Header :: struct #packed {
//signature: u32le,
minimum_version: u16le,
flags: u16le,
compression: u16le,
last_mod_time: u16le,
package io
import "core:os"
import "core:mem"
import "core:log"
import "core:runtime"
Error :: enum {
Ok,
Could_Not_Create_File,
@thebirk
thebirk / catsanddogs.py
Last active October 8, 2019 13:14
sdfsdf
import os
import glob
import cv2
import torch
from PIL import Image
from torch import nn
from torchvision import transforms
from torch.utils.data import Dataset, DataLoader
@thebirk
thebirk / clos.sh
Last active October 2, 2019 04:51
#/bin/bash
# clos - count lines of semicolons
# A simple utility that counts the number of semicolons in the supplied files
# NOT the number of lines with semicolons as the name implies, sorry about that
## MIT License
##
## Copyright (c) 2019 Aleksander B. Birkeland
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
const char* source_to_string(GLenum source) {
switch (source) {
case GL_DEBUG_SOURCE_API:
return "GL_DEBUG_SOURCE_API";
case GL_DEBUG_SOURCE_WINDOW_SYSTEM:
return "GL_DEBUG_SOURCE_WINDOW_SYSTEM";
case GL_DEBUG_SOURCE_SHADER_COMPILER:
return "GL_DEBUG_SOURCE_SHADER_COMPILER";
case GL_DEBUG_SOURCE_THIRD_PARTY:
return "GL_DEBUG_SOURCE_THIRD_PARTY";
import beeprint
import inspect
class Node:
def eval(self, kwargs):
raise RuntimeException('{} did not implement eval()'.format(self.__class__))
def __eq__(self, other):
return make_binary('==', self, other)
@thebirk
thebirk / odin-stacktrace.go
Last active August 31, 2019 17:18
Odin Stacktrace panic handler
/*
The MIT License
Copyright (c) 2019 Aleksander B. Birkeland
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
// Release - x64
void set_background_color(float r, float g, float b);
void draw_line(float x0, float y0, float x1, float y1, float r, float g, float b, float a);
float print_string(char* text, float x, float y, float size, float r, float g, float b, float a);
float print_int(int number, float x, float y, float size, float r, float g, float b, float a);
float print_float(float number, int decimals, float x, float y, float size, float r, float g, float b, float a);
double math_cos(double x);
double math_sin(double x);
double math_atan2(double x, double y);
TypeUniformMapping :: struct {
typetype: typeid,
set_uniform: proc(loc: i32, value: rawptr),
}
type_to_uniform_map := map[gl.Uniform_Type]TypeUniformMapping{
// If we map typeid to Uniform_Type, we could support stuff like array of floats and vec3s
gl.Uniform_Type.FLOAT = {typeid_of(f32), proc(loc: i32, value: rawptr) {
gl.Uniform1f(loc, (cast(^f32)value)^);